From bc6ba2c8ddeb4594454f3836bf6a00d0cd1c9edf Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Sun, 24 Dec 2023 16:03:10 +0100 Subject: [PATCH 01/25] bai bai old cod --- .github/workflows/pages.yml | 25 - .gitignore | 24 - .vscode/extensions.json | 3 - LICENSE | 21 - README.md | 3 - index.html | 19 - jsconfig.json | 32 - package-lock.json | 1072 ---------------------------------- package.json | 19 - public/Montserrat-Medium.ttf | Bin 198104 -> 0 bytes src/Router.svelte | 233 -------- src/lib/CodeBlock.svelte | 21 - src/main.js | 7 - src/pages/index.svelte | 56 -- src/pages/info.svelte | 119 ---- src/pages/notfound.svelte | 27 - src/pages/search.svelte | 123 ---- svelte.config.js | 7 - vite.config.js | 7 - 19 files changed, 1818 deletions(-) delete mode 100644 .github/workflows/pages.yml delete mode 100644 .gitignore delete mode 100644 .vscode/extensions.json delete mode 100644 LICENSE delete mode 100644 README.md delete mode 100644 index.html delete mode 100644 jsconfig.json delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 public/Montserrat-Medium.ttf delete mode 100644 src/Router.svelte delete mode 100644 src/lib/CodeBlock.svelte delete mode 100644 src/main.js delete mode 100644 src/pages/index.svelte delete mode 100644 src/pages/info.svelte delete mode 100644 src/pages/notfound.svelte delete mode 100644 src/pages/search.svelte delete mode 100644 svelte.config.js delete mode 100644 vite.config.js diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml deleted file mode 100644 index 7290756..0000000 --- a/.github/workflows/pages.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: pages -run-name: Publishing pages - -on: - push: - branches: [ "main" ] - - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: latest - - - run: npm install - - run: npm run build - - - uses: JamesIves/github-pages-deploy-action@4.1.5 - with: - branch: gh-pages - folder: dist diff --git a/.gitignore b/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index bdef820..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["svelte.svelte-vscode"] -} diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 3921217..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 Modern Modpacks - -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 deleted file mode 100644 index 923270d..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# KJSPKG Lookup - -This utility website allows you to share KJSPKG packages more easily, simply link them to `https://kjspkglookup.modernmodpacks.site/#[package-name]`. diff --git a/index.html b/index.html deleted file mode 100644 index 527d29a..0000000 --- a/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - KJSPKG Lookup - - - - - - - - -
- - - diff --git a/jsconfig.json b/jsconfig.json deleted file mode 100644 index 5696a2d..0000000 --- a/jsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "compilerOptions": { - "moduleResolution": "bundler", - "target": "ESNext", - "module": "ESNext", - /** - * svelte-preprocess cannot figure out whether you have - * a value or a type, so tell TypeScript to enforce using - * `import type` instead of `import` for Types. - */ - "verbatimModuleSyntax": true, - "isolatedModules": true, - "resolveJsonModule": true, - /** - * To have warnings / errors of the Svelte compiler at the - * correct position, enable source maps by default. - */ - "sourceMap": true, - "esModuleInterop": true, - "skipLibCheck": true, - /** - * Typecheck JS in `.svelte` and `.js` files by default. - * Disable this if you'd like to use dynamic types. - */ - "checkJs": true - }, - /** - * Use global.d.ts instead of compilerOptions.types - * to avoid limiting type declarations. - */ - "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] -} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index c06391b..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1072 +0,0 @@ -{ - "name": "kjspkg-lookup", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "kjspkg-lookup", - "version": "0.0.0", - "dependencies": { - "fuzzball": "^2.1.2" - }, - "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^2.0.4", - "svelte": "^3.58.0", - "vite": "^4.3.9" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.1.tgz", - "integrity": "sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==", - "dev": true, - "dependencies": { - "@sveltejs/vite-plugin-svelte-inspector": "^1.0.2", - "debug": "^4.3.4", - "deepmerge": "^4.3.1", - "kleur": "^4.1.5", - "magic-string": "^0.30.0", - "svelte-hmr": "^0.15.1", - "vitefu": "^0.2.4" - }, - "engines": { - "node": "^14.18.0 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.54.0 || ^4.0.0-next.0", - "vite": "^4.0.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte-inspector": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.2.tgz", - "integrity": "sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": "^14.18.0 || >= 16" - }, - "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^2.2.0", - "svelte": "^3.54.0 || ^4.0.0-next.0", - "vite": "^4.0.0" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" - } - }, - "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/fuzzball": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fuzzball/-/fuzzball-2.1.2.tgz", - "integrity": "sha512-wVBw/a73M3luaX6ZHt9vIoEKT/rLqBkzdBRhQzWw/IQyIt0qnqc0IAJDCkX3CLgj2tRIUAfgDUT8G6YuMpmNXg==", - "dependencies": { - "heap": ">=0.2.0", - "setimmediate": "^1.0.5", - "string.fromcodepoint": "^0.2.1", - "string.prototype.codepointat": "^0.2.0" - } - }, - "node_modules/heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/rollup": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.1.tgz", - "integrity": "sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "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==" - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string.fromcodepoint": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz", - "integrity": "sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==" - }, - "node_modules/string.prototype.codepointat": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", - "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" - }, - "node_modules/svelte": { - "version": "3.59.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.1.tgz", - "integrity": "sha512-pKj8fEBmqf6mq3/NfrB9SLtcJcUvjYSWyePlfCqN9gujLB25RitWK8PvFzlwim6hD/We35KbPlRteuA6rnPGcQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/svelte-hmr": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.2.tgz", - "integrity": "sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==", - "dev": true, - "engines": { - "node": "^12.20 || ^14.13.1 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.19.0 || ^4.0.0-next.0" - } - }, - "node_modules/vite": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", - "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", - "dev": true, - "dependencies": { - "esbuild": "^0.17.5", - "postcss": "^8.4.23", - "rollup": "^3.21.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vitefu": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", - "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", - "dev": true, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - } - }, - "dependencies": { - "@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "dev": true, - "optional": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "@sveltejs/vite-plugin-svelte": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.1.tgz", - "integrity": "sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==", - "dev": true, - "requires": { - "@sveltejs/vite-plugin-svelte-inspector": "^1.0.2", - "debug": "^4.3.4", - "deepmerge": "^4.3.1", - "kleur": "^4.1.5", - "magic-string": "^0.30.0", - "svelte-hmr": "^0.15.1", - "vitefu": "^0.2.4" - } - }, - "@sveltejs/vite-plugin-svelte-inspector": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.2.tgz", - "integrity": "sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==", - "dev": true, - "requires": { - "debug": "^4.3.4" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true - }, - "esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" - } - }, - "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 - }, - "fuzzball": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fuzzball/-/fuzzball-2.1.2.tgz", - "integrity": "sha512-wVBw/a73M3luaX6ZHt9vIoEKT/rLqBkzdBRhQzWw/IQyIt0qnqc0IAJDCkX3CLgj2tRIUAfgDUT8G6YuMpmNXg==", - "requires": { - "heap": ">=0.2.0", - "setimmediate": "^1.0.5", - "string.fromcodepoint": "^0.2.1", - "string.prototype.codepointat": "^0.2.0" - } - }, - "heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true - }, - "magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" - } - }, - "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.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", - "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "rollup": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.1.tgz", - "integrity": "sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "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==" - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "string.fromcodepoint": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz", - "integrity": "sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==" - }, - "string.prototype.codepointat": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", - "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" - }, - "svelte": { - "version": "3.59.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.1.tgz", - "integrity": "sha512-pKj8fEBmqf6mq3/NfrB9SLtcJcUvjYSWyePlfCqN9gujLB25RitWK8PvFzlwim6hD/We35KbPlRteuA6rnPGcQ==", - "dev": true - }, - "svelte-hmr": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.2.tgz", - "integrity": "sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==", - "dev": true, - "requires": {} - }, - "vite": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", - "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", - "dev": true, - "requires": { - "esbuild": "^0.17.5", - "fsevents": "~2.3.2", - "postcss": "^8.4.23", - "rollup": "^3.21.0" - } - }, - "vitefu": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", - "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", - "dev": true, - "requires": {} - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 0faacca..0000000 --- a/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "kjspkg-lookup", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^2.0.4", - "svelte": "^3.58.0", - "vite": "^4.3.9" - }, - "dependencies": { - "fuzzball": "^2.1.2" - } -} diff --git a/public/Montserrat-Medium.ttf b/public/Montserrat-Medium.ttf deleted file mode 100644 index dfc7e2fc59dfbfaf577dc2777f6bb910a6d04d1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198104 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

<@j64`IYesu7?)-gT(_d6}y}Z*kwatbFlb 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

}X?55*^Ryu}MX@@X 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 - import Index from "./pages/index.svelte"; - import Info from "./pages/info.svelte"; - import Notfound from "./pages/notfound.svelte"; - import Search from "./pages/search.svelte"; - - // TODO: add embed - let packages - let pkgname = "" - let pkginfo - let branch - let path - let regname - - let search = false - - let prettify = str => { - let newstr = "" - let bigletter = true - - for(const i of str) { - if (bigletter) newstr += i.toUpperCase() - else newstr += i - - bigletter = false - if ([" ", "("].includes(i)) bigletter=true - } - - return newstr - } - - fetch( - "https://raw.githubusercontent.com/Modern-Modpacks/kjspkg/main/pkgs.json" - ).then(r => { - r.json().then((j) => {packages=j}) - }) - - setInterval(() => { - if (window.location.hash) { - if (packages==null || (pkgname!=null && pkgname==window.location.hash.substring(1))) return - pkgname = window.location.hash.substring(1); - if (!Object.keys(packages).includes(pkgname)) pkginfo = "404"; - else { - regname = packages[pkgname].split("@")[0].split("$")[0]; - branch = packages[pkgname].includes("@") - ? packages[pkgname].split("@").at(-1) - : "main"; - path = packages[pkgname].includes("$") - ? packages[pkgname].split("@")[0].split("$").at(-1) - : null - fetch( - `https://raw.githubusercontent.com/${regname}/${branch}${path!=null ? "/"+path : ""}/.kjspkg` - ).then((i) => { - i.json().then((info) => { - pkginfo = info; - }); - }); - } - } else pkginfo = "main"; - }, 1) - - -

- {#if pkginfo == null} -
- {:else if pkginfo == "main"} - {#if search} - - {:else} - - {/if} - {:else if pkginfo == "404"} - - {:else} - - {/if} -
- - diff --git a/src/lib/CodeBlock.svelte b/src/lib/CodeBlock.svelte deleted file mode 100644 index 54b3cf8..0000000 --- a/src/lib/CodeBlock.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - - - {navigator.clipboard.writeText(data?.innerText)}}> - - \ No newline at end of file diff --git a/src/main.js b/src/main.js deleted file mode 100644 index ae1a9f0..0000000 --- a/src/main.js +++ /dev/null @@ -1,7 +0,0 @@ -import App from './Router.svelte' - -const app = new App({ - target: document.getElementById('app'), -}) - -export default app diff --git a/src/pages/index.svelte b/src/pages/index.svelte deleted file mode 100644 index 6d13c92..0000000 --- a/src/pages/index.svelte +++ /dev/null @@ -1,56 +0,0 @@ - - - -
- - -
-

KJSPKG LOOKUP

-

Show other people the packages you love!

-
- -
-

- This website serves as a means to share KJSPKG packages more easily. -
-
- Don't know what KJSPKG is? Click the GitHub logo at the bottom of the page -
-
- To link a package, simply do: {window.location.origin}/#[package-name]! -

-
- - - -
- github - site -
-
\ No newline at end of file diff --git a/src/pages/info.svelte b/src/pages/info.svelte deleted file mode 100644 index 8fbf121..0000000 --- a/src/pages/info.svelte +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - {pkgname ? prettify(pkgname.replaceAll("-", " ")) : null} - - -
-
-

{pkgname ? prettify(pkgname.replaceAll("-", " ")) : null}

-

{@html linkify(pkginfo.description)}

-

By {pkginfo.author}

-
- -
-

Available for:

-

{versions}

-

{loaders}

- - {#if pkginfo.dependencies.length || pkginfo.incompatibilities.length} -
- {/if} - - {#if pkginfo.dependencies.length} -

Dependencies:

-

{getdepsandincompats(pkginfo.dependencies)}

- {/if} - {#if pkginfo.incompatibilities.length} -

Incompatibilities:

-

{getdepsandincompats(pkginfo.incompatibilities)}

- {/if} - -
- -

Commands:

-

kjspkg install {pkgname} to install

-

kjspkg remove {pkgname} to remove

-

kjspkg update {pkgname} to update

-

kjspkg pkg {pkgname} to see more info

- -
- -
- -
-
- -

Confused about what this is? Checkout the main page

-
\ No newline at end of file diff --git a/src/pages/notfound.svelte b/src/pages/notfound.svelte deleted file mode 100644 index ecf3736..0000000 --- a/src/pages/notfound.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - Package not found - - -
-

Whoops, something has gone wrong!

-

The package {window.location.hash.substring(1)} was not found

- -
-
- - Go back -
\ No newline at end of file diff --git a/src/pages/search.svelte b/src/pages/search.svelte deleted file mode 100644 index 1a07013..0000000 --- a/src/pages/search.svelte +++ /dev/null @@ -1,123 +0,0 @@ - - - - -
- - -
- {#if bestResults!=null} - {#each bestResults.sort() as result} - -

{prettify(result.replaceAll("-", " "))}

-

{packages[result]}

-
- {/each} - {/if} -
-
\ No newline at end of file diff --git a/svelte.config.js b/svelte.config.js deleted file mode 100644 index b0683fd..0000000 --- a/svelte.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' - -export default { - // Consult https://svelte.dev/docs#compile-time-svelte-preprocess - // for more information about preprocessors - preprocess: vitePreprocess(), -} diff --git a/vite.config.js b/vite.config.js deleted file mode 100644 index d701969..0000000 --- a/vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import { svelte } from '@sveltejs/vite-plugin-svelte' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [svelte()], -}) From b34bd343a14a4e2fcf367d2c9f03c1d10f720fb3 Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Sun, 24 Dec 2023 16:04:55 +0100 Subject: [PATCH 02/25] sveltekit my beloved --- .gitignore | 10 + .npmrc | 1 + .prettierignore | 4 + .prettierrc | 8 + README.md | 38 ++ package.json | 27 + pnpm-lock.yaml | 1229 +++++++++++++++++++++++++++++++++++++++ src/app.d.ts | 13 + src/app.html | 12 + src/lib/index.ts | 1 + src/routes/+page.svelte | 2 + static/favicon.png | Bin 0 -> 1571 bytes svelte.config.js | 18 + tsconfig.json | 18 + vite.config.ts | 6 + 15 files changed, 1387 insertions(+) create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 README.md create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 src/app.d.ts create mode 100644 src/app.html create mode 100644 src/lib/index.ts create mode 100644 src/routes/+page.svelte create mode 100644 static/favicon.png create mode 100644 svelte.config.js create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6635cf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..cc41cea --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..9573023 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ce6766 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/package.json b/package.json new file mode 100644 index 0000000..7ad2ef9 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "kjspkg-lookup", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check .", + "format": "prettier --write ." + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "svelte": "^4.2.7", + "svelte-check": "^3.6.0", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.0.3" + }, + "type": "module" +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..9bc8abf --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1229 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +devDependencies: + '@sveltejs/adapter-auto': + specifier: ^3.0.0 + version: 3.0.1(@sveltejs/kit@2.0.6) + '@sveltejs/adapter-static': + specifier: ^3.0.1 + version: 3.0.1(@sveltejs/kit@2.0.6) + '@sveltejs/kit': + specifier: ^2.0.0 + version: 2.0.6(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10) + '@sveltejs/vite-plugin-svelte': + specifier: ^3.0.0 + version: 3.0.1(svelte@4.2.8)(vite@5.0.10) + prettier: + specifier: ^3.1.1 + version: 3.1.1 + prettier-plugin-svelte: + specifier: ^3.1.2 + version: 3.1.2(prettier@3.1.1)(svelte@4.2.8) + svelte: + specifier: ^4.2.7 + version: 4.2.8 + svelte-check: + specifier: ^3.6.0 + version: 3.6.2(svelte@4.2.8) + tslib: + specifier: ^2.4.1 + version: 2.6.2 + typescript: + specifier: ^5.0.0 + version: 5.3.3 + vite: + specifier: ^5.0.3 + version: 5.0.10 + +packages: + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@esbuild/aix-ppc64@0.19.10: + resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.10: + resolution: {integrity: sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.10: + resolution: {integrity: sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.10: + resolution: {integrity: sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.10: + resolution: {integrity: sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.10: + resolution: {integrity: sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.10: + resolution: {integrity: sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.10: + resolution: {integrity: sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.10: + resolution: {integrity: sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.10: + resolution: {integrity: sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.10: + resolution: {integrity: sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.10: + resolution: {integrity: sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.10: + resolution: {integrity: sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.10: + resolution: {integrity: sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.10: + resolution: {integrity: sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.10: + resolution: {integrity: sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.10: + resolution: {integrity: sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.10: + resolution: {integrity: sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.10: + resolution: {integrity: sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.10: + resolution: {integrity: sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.10: + resolution: {integrity: sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.10: + resolution: {integrity: sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.10: + resolution: {integrity: sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.16.0 + dev: true + + /@polka/url@1.0.0-next.24: + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + dev: true + + /@rollup/rollup-android-arm-eabi@4.9.1: + resolution: {integrity: sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.9.1: + resolution: {integrity: sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.9.1: + resolution: {integrity: sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.9.1: + resolution: {integrity: sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.9.1: + resolution: {integrity: sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.9.1: + resolution: {integrity: sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.9.1: + resolution: {integrity: sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.9.1: + resolution: {integrity: sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.9.1: + resolution: {integrity: sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.9.1: + resolution: {integrity: sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.9.1: + resolution: {integrity: sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.9.1: + resolution: {integrity: sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.9.1: + resolution: {integrity: sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@sveltejs/adapter-auto@3.0.1(@sveltejs/kit@2.0.6): + resolution: {integrity: sha512-OpilmvRN136lUgOa9F0zpSI6g+PouOmk+YvJQrB+/hAtllLghjjYuoyfUsrF7U6oJ52cxCtAJTPXgZdyyCffrQ==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + dependencies: + '@sveltejs/kit': 2.0.6(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10) + import-meta-resolve: 4.0.0 + dev: true + + /@sveltejs/adapter-static@3.0.1(@sveltejs/kit@2.0.6): + resolution: {integrity: sha512-6lMvf7xYEJ+oGeR5L8DFJJrowkefTK6ZgA4JiMqoClMkKq0s6yvsd3FZfCFvX1fQ0tpCD7fkuRVHsnUVgsHyNg==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + dependencies: + '@sveltejs/kit': 2.0.6(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10) + dev: true + + /@sveltejs/kit@2.0.6(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10): + resolution: {integrity: sha512-dnHtyjBLGXx+hrZQ9GuqLlSfTBixewJaByUVWai7LmB4dgV3FwkK155OltEgONDQW6KW64hLNS/uojdx3uC2/g==} + engines: {node: '>=18.13'} + hasBin: true + requiresBuild: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 + dependencies: + '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.10) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 4.3.2 + esm-env: 1.0.0 + kleur: 4.1.5 + magic-string: 0.30.5 + mrmime: 2.0.0 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 2.0.4 + svelte: 4.2.8 + tiny-glob: 0.2.9 + vite: 5.0.10 + dev: true + + /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10): + resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.10) + debug: 4.3.4 + svelte: 4.2.8 + vite: 5.0.10 + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.8)(vite@5.0.10): + resolution: {integrity: sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.5 + svelte: 4.2.8 + svelte-hmr: 0.15.3(svelte@4.2.8) + vite: 5.0.10 + vitefu: 0.2.5(vite@5.0.10) + transitivePeerDependencies: + - supports-color + dev: true + + /@types/cookie@0.6.0: + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/pug@2.0.10: + resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + dev: true + + /acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + '@types/estree': 1.0.5 + acorn: 8.11.2 + estree-walker: 3.0.3 + periscopic: 3.1.0 + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + dev: true + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /devalue@4.3.2: + resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} + dev: true + + /es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true + + /esbuild@0.19.10: + resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.10 + '@esbuild/android-arm': 0.19.10 + '@esbuild/android-arm64': 0.19.10 + '@esbuild/android-x64': 0.19.10 + '@esbuild/darwin-arm64': 0.19.10 + '@esbuild/darwin-x64': 0.19.10 + '@esbuild/freebsd-arm64': 0.19.10 + '@esbuild/freebsd-x64': 0.19.10 + '@esbuild/linux-arm': 0.19.10 + '@esbuild/linux-arm64': 0.19.10 + '@esbuild/linux-ia32': 0.19.10 + '@esbuild/linux-loong64': 0.19.10 + '@esbuild/linux-mips64el': 0.19.10 + '@esbuild/linux-ppc64': 0.19.10 + '@esbuild/linux-riscv64': 0.19.10 + '@esbuild/linux-s390x': 0.19.10 + '@esbuild/linux-x64': 0.19.10 + '@esbuild/netbsd-x64': 0.19.10 + '@esbuild/openbsd-x64': 0.19.10 + '@esbuild/sunos-x64': 0.19.10 + '@esbuild/win32-arm64': 0.19.10 + '@esbuild/win32-ia32': 0.19.10 + '@esbuild/win32-x64': 0.19.10 + dev: true + + /esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + dev: true + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fastq@1.16.0: + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + dependencies: + reusify: 1.0.4 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + dependencies: + '@types/estree': 1.0.5 + dev: true + + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + + /locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + dev: true + + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /postcss@8.4.32: + resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@4.2.8): + resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + dependencies: + prettier: 3.1.1 + svelte: 4.2.8 + dev: true + + /prettier@3.1.1: + resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@4.9.1: + resolution: {integrity: sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.9.1 + '@rollup/rollup-android-arm64': 4.9.1 + '@rollup/rollup-darwin-arm64': 4.9.1 + '@rollup/rollup-darwin-x64': 4.9.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.9.1 + '@rollup/rollup-linux-arm64-gnu': 4.9.1 + '@rollup/rollup-linux-arm64-musl': 4.9.1 + '@rollup/rollup-linux-riscv64-gnu': 4.9.1 + '@rollup/rollup-linux-x64-gnu': 4.9.1 + '@rollup/rollup-linux-x64-musl': 4.9.1 + '@rollup/rollup-win32-arm64-msvc': 4.9.1 + '@rollup/rollup-win32-ia32-msvc': 4.9.1 + '@rollup/rollup-win32-x64-msvc': 4.9.1 + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + + /sander@0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + dependencies: + es6-promise: 3.3.1 + graceful-fs: 4.2.11 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: true + + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + dev: true + + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.24 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: true + + /sorcery@0.11.0: + resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} + hasBin: true + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + buffer-crc32: 0.2.13 + minimist: 1.2.8 + sander: 0.5.1 + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /svelte-check@3.6.2(svelte@4.2.8): + resolution: {integrity: sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + chokidar: 3.5.3 + fast-glob: 3.3.2 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 4.2.8 + svelte-preprocess: 5.1.3(svelte@4.2.8)(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + + /svelte-hmr@0.15.3(svelte@4.2.8): + resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + dependencies: + svelte: 4.2.8 + dev: true + + /svelte-preprocess@5.1.3(svelte@4.2.8)(typescript@5.3.3): + resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} + engines: {node: '>= 16.0.0', pnpm: ^8.0.0} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + dependencies: + '@types/pug': 2.0.10 + detect-indent: 6.1.0 + magic-string: 0.30.5 + sorcery: 0.11.0 + strip-indent: 3.0.0 + svelte: 4.2.8 + typescript: 5.3.3 + dev: true + + /svelte@4.2.8: + resolution: {integrity: sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==} + engines: {node: '>=16'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + acorn: 8.11.2 + aria-query: 5.3.0 + axobject-query: 3.2.1 + code-red: 1.0.4 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.5 + periscopic: 3.1.0 + dev: true + + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /vite@5.0.10: + resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.19.10 + postcss: 8.4.32 + rollup: 4.9.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitefu@0.2.5(vite@5.0.10): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 5.0.10 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..743f07b --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..77a5ff5 --- /dev/null +++ b/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/src/lib/index.ts b/src/lib/index.ts new file mode 100644 index 0000000..856f2b6 --- /dev/null +++ b/src/lib/index.ts @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 0000000..5982b0a --- /dev/null +++ b/src/routes/+page.svelte @@ -0,0 +1,2 @@ +

Welcome to SvelteKit

+

Visit kit.svelte.dev to read the documentation

diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097 GIT binary patch literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH Date: Sun, 24 Dec 2023 16:10:41 +0100 Subject: [PATCH 03/25] static gen --- src/routes/+layout.svelte | 5 +++++ src/routes/+layout.ts | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 src/routes/+layout.svelte create mode 100644 src/routes/+layout.ts diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..17abf18 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,5 @@ + + + diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts new file mode 100644 index 0000000..9d6b691 --- /dev/null +++ b/src/routes/+layout.ts @@ -0,0 +1,2 @@ +export const prerender = true; +export const csr = false; From f4e7f66a5433f61ad99838bec934713c65520ad1 Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Sun, 24 Dec 2023 16:10:46 +0100 Subject: [PATCH 04/25] tailwhind --- .prettierrc | 11 +++++++++-- package.json | 11 +++++++++-- pnpm-lock.yaml | 16 ---------------- postcss.config.cjs | 13 +++++++++++++ src/app.pcss | 4 ++++ svelte.config.js | 4 ++-- tailwind.config.cjs | 15 +++++++++++++++ 7 files changed, 52 insertions(+), 22 deletions(-) create mode 100644 postcss.config.cjs create mode 100644 src/app.pcss create mode 100644 tailwind.config.cjs diff --git a/.prettierrc b/.prettierrc index 9573023..7ebb855 100644 --- a/.prettierrc +++ b/.prettierrc @@ -3,6 +3,13 @@ "singleQuote": true, "trailingComma": "none", "printWidth": 100, - "plugins": ["prettier-plugin-svelte"], - "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] + "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ] } diff --git a/package.json b/package.json index 7ad2ef9..2004594 100644 --- a/package.json +++ b/package.json @@ -12,16 +12,23 @@ "format": "prettier --write ." }, "devDependencies": { - "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/adapter-static": "^3.0.1", "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@tailwindcss/forms": "^0.5.7", + "@tailwindcss/typography": "^0.5.10", + "autoprefixer": "^10.4.16", + "postcss": "^8.4.32", + "postcss-load-config": "^5.0.2", "prettier": "^3.1.1", "prettier-plugin-svelte": "^3.1.2", + "prettier-plugin-tailwindcss": "^0.5.9", "svelte": "^4.2.7", "svelte-check": "^3.6.0", + "tailwindcss": "^3.3.6", "tslib": "^2.4.1", "typescript": "^5.0.0", "vite": "^5.0.3" }, "type": "module" -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9bc8abf..1d1cd50 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,9 +5,6 @@ settings: excludeLinksFromLockfile: false devDependencies: - '@sveltejs/adapter-auto': - specifier: ^3.0.0 - version: 3.0.1(@sveltejs/kit@2.0.6) '@sveltejs/adapter-static': specifier: ^3.0.1 version: 3.0.1(@sveltejs/kit@2.0.6) @@ -415,15 +412,6 @@ packages: dev: true optional: true - /@sveltejs/adapter-auto@3.0.1(@sveltejs/kit@2.0.6): - resolution: {integrity: sha512-OpilmvRN136lUgOa9F0zpSI6g+PouOmk+YvJQrB+/hAtllLghjjYuoyfUsrF7U6oJ52cxCtAJTPXgZdyyCffrQ==} - peerDependencies: - '@sveltejs/kit': ^2.0.0 - dependencies: - '@sveltejs/kit': 2.0.6(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10) - import-meta-resolve: 4.0.0 - dev: true - /@sveltejs/adapter-static@3.0.1(@sveltejs/kit@2.0.6): resolution: {integrity: sha512-6lMvf7xYEJ+oGeR5L8DFJJrowkefTK6ZgA4JiMqoClMkKq0s6yvsd3FZfCFvX1fQ0tpCD7fkuRVHsnUVgsHyNg==} peerDependencies: @@ -756,10 +744,6 @@ packages: resolve-from: 4.0.0 dev: true - /import-meta-resolve@4.0.0: - resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} - dev: true - /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..fe10e55 --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,13 @@ +const tailwindcss = require('tailwindcss'); +const autoprefixer = require('autoprefixer'); + +const config = { + plugins: [ + //Some plugins, like tailwindcss/nesting, need to run before Tailwind, + tailwindcss(), + //But others, like autoprefixer, need to run after, + autoprefixer + ] +}; + +module.exports = config; diff --git a/src/app.pcss b/src/app.pcss new file mode 100644 index 0000000..1a7b7cf --- /dev/null +++ b/src/app.pcss @@ -0,0 +1,4 @@ +/* Write your global styles here, in PostCSS syntax */ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/svelte.config.js b/svelte.config.js index 2b35fe1..5362bca 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,11 +1,11 @@ -import adapter from '@sveltejs/adapter-auto'; +import adapter from '@sveltejs/adapter-static'; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; /** @type {import('@sveltejs/kit').Config} */ const config = { // Consult https://kit.svelte.dev/docs/integrations#preprocessors // for more information about preprocessors - preprocess: vitePreprocess(), + preprocess: [vitePreprocess({})], kit: { // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. diff --git a/tailwind.config.cjs b/tailwind.config.cjs new file mode 100644 index 0000000..39daa66 --- /dev/null +++ b/tailwind.config.cjs @@ -0,0 +1,15 @@ +const typography = require('@tailwindcss/typography'); +const forms = require('@tailwindcss/forms'); + +/** @type {import('tailwindcss').Config}*/ +const config = { + content: ['./src/**/*.{html,js,svelte,ts}'], + + theme: { + extend: {} + }, + + plugins: [forms, typography] +}; + +module.exports = config; From 959a736fba80a6fcfbb117da00b650864296848f Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Sun, 24 Dec 2023 16:28:18 +0100 Subject: [PATCH 05/25] =?UTF-8?q?skeleton=20=F0=9F=92=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 8 +- pnpm-lock.yaml | 746 +++++++++++++++++++++++++++++++++++++- src/app.html | 6 +- src/app.pcss | 5 + src/routes/+layout.svelte | 11 +- src/themes/kjspkg.ts | 101 ++++++ tailwind.config.cjs | 15 - tailwind.config.ts | 30 ++ 8 files changed, 891 insertions(+), 31 deletions(-) create mode 100644 src/themes/kjspkg.ts delete mode 100644 tailwind.config.cjs create mode 100644 tailwind.config.ts diff --git a/package.json b/package.json index 2004594..81fb038 100644 --- a/package.json +++ b/package.json @@ -9,14 +9,18 @@ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check .", - "format": "prettier --write ." + "format": "prettier --write .", + "preinstall": "npx only-allow pnpm" }, "devDependencies": { + "@skeletonlabs/skeleton": "^2.6.1", + "@skeletonlabs/tw-plugin": "^0.3.0", "@sveltejs/adapter-static": "^3.0.1", "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^3.0.0", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.10", + "@types/node": "^20.10.5", "autoprefixer": "^10.4.16", "postcss": "^8.4.32", "postcss-load-config": "^5.0.2", @@ -31,4 +35,4 @@ "vite": "^5.0.3" }, "type": "module" -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d1cd50..b75b590 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,12 @@ settings: excludeLinksFromLockfile: false devDependencies: + '@skeletonlabs/skeleton': + specifier: ^2.6.1 + version: 2.6.1(svelte@4.2.8) + '@skeletonlabs/tw-plugin': + specifier: ^0.3.0 + version: 0.3.0(tailwindcss@3.4.0) '@sveltejs/adapter-static': specifier: ^3.0.1 version: 3.0.1(@sveltejs/kit@2.0.6) @@ -14,18 +20,42 @@ devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 version: 3.0.1(svelte@4.2.8)(vite@5.0.10) + '@tailwindcss/forms': + specifier: ^0.5.7 + version: 0.5.7(tailwindcss@3.4.0) + '@tailwindcss/typography': + specifier: ^0.5.10 + version: 0.5.10(tailwindcss@3.4.0) + '@types/node': + specifier: ^20.10.5 + version: 20.10.5 + autoprefixer: + specifier: ^10.4.16 + version: 10.4.16(postcss@8.4.32) + postcss: + specifier: ^8.4.32 + version: 8.4.32 + postcss-load-config: + specifier: ^5.0.2 + version: 5.0.2(postcss@8.4.32) prettier: specifier: ^3.1.1 version: 3.1.1 prettier-plugin-svelte: specifier: ^3.1.2 version: 3.1.2(prettier@3.1.1)(svelte@4.2.8) + prettier-plugin-tailwindcss: + specifier: ^0.5.9 + version: 0.5.9(prettier-plugin-svelte@3.1.2)(prettier@3.1.1) svelte: specifier: ^4.2.7 version: 4.2.8 svelte-check: specifier: ^3.6.0 - version: 3.6.2(svelte@4.2.8) + version: 3.6.2(postcss-load-config@5.0.2)(postcss@8.4.32)(svelte@4.2.8) + tailwindcss: + specifier: ^3.3.6 + version: 3.4.0 tslib: specifier: ^2.4.1 version: 2.6.2 @@ -34,10 +64,15 @@ devDependencies: version: 5.3.3 vite: specifier: ^5.0.3 - version: 5.0.10 + version: 5.0.10(@types/node@20.10.5) packages: + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: true + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -253,6 +288,18 @@ packages: dev: true optional: true + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -304,6 +351,13 @@ packages: fastq: 1.16.0 dev: true + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + /@polka/url@1.0.0-next.24: resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} dev: true @@ -412,6 +466,23 @@ packages: dev: true optional: true + /@skeletonlabs/skeleton@2.6.1(svelte@4.2.8): + resolution: {integrity: sha512-LDdgsnCgD+ZsI/82F7tHXmBXwd0Kx0WnQSSvgd94qgf2zZVeDMaKh2C6lEvgF0z31tvi83dyGnL7vM3IJlmWhg==} + peerDependencies: + svelte: ^3.56.0 || ^4.0.0 + dependencies: + esm-env: 1.0.0 + svelte: 4.2.8 + dev: true + + /@skeletonlabs/tw-plugin@0.3.0(tailwindcss@3.4.0): + resolution: {integrity: sha512-0tBlZSHk791jvDTC41FlIafa8ZmaODjvOwmghcbla96Fbv9dI1u9+OJ2ScSxzy7xI6qjuQ80Uhw9kn53MMYi4Q==} + peerDependencies: + tailwindcss: '>=3.0.0' + dependencies: + tailwindcss: 3.4.0 + dev: true + /@sveltejs/adapter-static@3.0.1(@sveltejs/kit@2.0.6): resolution: {integrity: sha512-6lMvf7xYEJ+oGeR5L8DFJJrowkefTK6ZgA4JiMqoClMkKq0s6yvsd3FZfCFvX1fQ0tpCD7fkuRVHsnUVgsHyNg==} peerDependencies: @@ -443,7 +514,7 @@ packages: sirv: 2.0.4 svelte: 4.2.8 tiny-glob: 0.2.9 - vite: 5.0.10 + vite: 5.0.10(@types/node@20.10.5) dev: true /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10): @@ -457,7 +528,7 @@ packages: '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.10) debug: 4.3.4 svelte: 4.2.8 - vite: 5.0.10 + vite: 5.0.10(@types/node@20.10.5) transitivePeerDependencies: - supports-color dev: true @@ -476,12 +547,33 @@ packages: magic-string: 0.30.5 svelte: 4.2.8 svelte-hmr: 0.15.3(svelte@4.2.8) - vite: 5.0.10 + vite: 5.0.10(@types/node@20.10.5) vitefu: 0.2.5(vite@5.0.10) transitivePeerDependencies: - supports-color dev: true + /@tailwindcss/forms@0.5.7(tailwindcss@3.4.0): + resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==} + peerDependencies: + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' + dependencies: + mini-svg-data-uri: 1.4.4 + tailwindcss: 3.4.0 + dev: true + + /@tailwindcss/typography@0.5.10(tailwindcss@3.4.0): + resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.0 + dev: true + /@types/cookie@0.6.0: resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} dev: true @@ -490,6 +582,12 @@ packages: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true + /@types/node@20.10.5: + resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} + dependencies: + undici-types: 5.26.5 + dev: true + /@types/pug@2.0.10: resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} dev: true @@ -500,6 +598,32 @@ packages: hasBin: true dev: true + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -508,12 +632,32 @@ packages: picomatch: 2.3.1 dev: true + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 dev: true + /autoprefixer@10.4.16(postcss@8.4.32): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.22.2 + caniuse-lite: 1.0.30001571 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.32 + postcss-value-parser: 4.2.0 + dev: true + /axobject-query@3.2.1: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: @@ -536,6 +680,12 @@ packages: concat-map: 0.0.1 dev: true + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -543,6 +693,17 @@ packages: fill-range: 7.0.1 dev: true + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001571 + electron-to-chromium: 1.4.616 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: true @@ -552,6 +713,15 @@ packages: engines: {node: '>=6'} dev: true + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + + /caniuse-lite@1.0.30001571: + resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} + dev: true + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -577,6 +747,22 @@ packages: periscopic: 3.1.0 dev: true + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true @@ -586,6 +772,15 @@ packages: engines: {node: '>= 0.6'} dev: true + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + /css-tree@2.3.1: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} @@ -594,6 +789,12 @@ packages: source-map-js: 1.0.2 dev: true + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -625,6 +826,30 @@ packages: resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} dev: true + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /electron-to-chromium@1.4.616: + resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + /es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true @@ -660,6 +885,11 @@ packages: '@esbuild/win32-x64': 0.19.10 dev: true + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + /esm-env@1.0.0: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} dev: true @@ -694,6 +924,18 @@ packages: to-regex-range: 5.0.1 dev: true + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -706,6 +948,10 @@ packages: dev: true optional: true + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -713,6 +959,25 @@ packages: is-glob: 4.0.3 dev: true + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -736,6 +1001,13 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -762,11 +1034,22 @@ packages: binary-extensions: 2.2.0 dev: true + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -785,15 +1068,64 @@ packages: '@types/estree': 1.0.5 dev: true + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: true + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} dev: true + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lilconfig@3.0.0: + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + /locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} dev: true + /lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + dev: true + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + dev: true + /magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} @@ -823,16 +1155,33 @@ packages: engines: {node: '>=4'} dev: true + /mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -854,17 +1203,44 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -883,6 +1259,23 @@ packages: engines: {node: '>=0.10.0'} dev: true + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.1.0 + minipass: 7.0.4 + dev: true + /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: @@ -900,6 +1293,102 @@ packages: engines: {node: '>=8.6'} dev: true + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /postcss-import@15.1.0(postcss@8.4.32): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.32 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: true + + /postcss-js@4.0.1(postcss@8.4.32): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.32 + dev: true + + /postcss-load-config@4.0.2(postcss@8.4.32): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.0.0 + postcss: 8.4.32 + yaml: 2.3.4 + dev: true + + /postcss-load-config@5.0.2(postcss@8.4.32): + resolution: {integrity: sha512-Q8QR3FYbqOKa0bnC1UQ2bFq9/ulHX5Bi34muzitMr8aDtUelO5xKeJEYC/5smE0jNE9zdB/NBnOwXKexELbRlw==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + dependencies: + lilconfig: 3.0.0 + postcss: 8.4.32 + yaml: 2.3.4 + dev: true + + /postcss-nested@6.0.1(postcss@8.4.32): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.32 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + /postcss@8.4.32: resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} engines: {node: ^10 || ^12 || >=14} @@ -919,6 +1408,59 @@ packages: svelte: 4.2.8 dev: true + /prettier-plugin-tailwindcss@0.5.9(prettier-plugin-svelte@3.1.2)(prettier@3.1.1): + resolution: {integrity: sha512-9x3t1s2Cjbut2QiP+O0mDqV3gLXTe2CgRlQDgucopVkUdw26sQi53p/q4qvGxMLBDfk/dcTV57Aa/zYwz9l8Ew==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + prettier-plugin-twig-melody: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + prettier-plugin-twig-melody: + optional: true + dependencies: + prettier: 3.1.1 + prettier-plugin-svelte: 3.1.2(prettier@3.1.1)(svelte@4.2.8) + dev: true + /prettier@3.1.1: resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} engines: {node: '>=14'} @@ -929,6 +1471,12 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -941,6 +1489,15 @@ packages: engines: {node: '>=4'} dev: true + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -1000,6 +1557,23 @@ packages: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + /sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} @@ -1024,6 +1598,38 @@ packages: engines: {node: '>=0.10.0'} dev: true + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -1031,7 +1637,26 @@ packages: min-indent: 1.0.1 dev: true - /svelte-check@3.6.2(svelte@4.2.8): + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 10.3.10 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /svelte-check@3.6.2(postcss-load-config@5.0.2)(postcss@8.4.32)(svelte@4.2.8): resolution: {integrity: sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==} hasBin: true peerDependencies: @@ -1044,7 +1669,7 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 4.2.8 - svelte-preprocess: 5.1.3(svelte@4.2.8)(typescript@5.3.3) + svelte-preprocess: 5.1.3(postcss-load-config@5.0.2)(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - '@babel/core' @@ -1067,7 +1692,7 @@ packages: svelte: 4.2.8 dev: true - /svelte-preprocess@5.1.3(svelte@4.2.8)(typescript@5.3.3): + /svelte-preprocess@5.1.3(postcss-load-config@5.0.2)(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3): resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} engines: {node: '>= 16.0.0', pnpm: ^8.0.0} requiresBuild: true @@ -1108,6 +1733,8 @@ packages: '@types/pug': 2.0.10 detect-indent: 6.1.0 magic-string: 0.30.5 + postcss: 8.4.32 + postcss-load-config: 5.0.2(postcss@8.4.32) sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.2.8 @@ -1133,6 +1760,50 @@ packages: periscopic: 3.1.0 dev: true + /tailwindcss@3.4.0: + resolution: {integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.5.3 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.32 + postcss-import: 15.1.0(postcss@8.4.32) + postcss-js: 4.0.1(postcss@8.4.32) + postcss-load-config: 4.0.2(postcss@8.4.32) + postcss-nested: 6.0.1(postcss@8.4.32) + postcss-selector-parser: 6.0.13 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: @@ -1152,6 +1823,10 @@ packages: engines: {node: '>=6'} dev: true + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true @@ -1162,7 +1837,26 @@ packages: hasBin: true dev: true - /vite@5.0.10: + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /vite@5.0.10(@types/node@20.10.5): resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -1190,6 +1884,7 @@ packages: terser: optional: true dependencies: + '@types/node': 20.10.5 esbuild: 0.19.10 postcss: 8.4.32 rollup: 4.9.1 @@ -1205,9 +1900,40 @@ packages: vite: optional: true dependencies: - vite: 5.0.10 + vite: 5.0.10(@types/node@20.10.5) + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 dev: true /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + dev: true diff --git a/src/app.html b/src/app.html index 77a5ff5..dc43516 100644 --- a/src/app.html +++ b/src/app.html @@ -1,12 +1,12 @@ - + %sveltekit.head% - -
%sveltekit.body%
+ +
%sveltekit.body%
diff --git a/src/app.pcss b/src/app.pcss index 1a7b7cf..9147ded 100644 --- a/src/app.pcss +++ b/src/app.pcss @@ -2,3 +2,8 @@ @tailwind base; @tailwind components; @tailwind utilities; + +html, +body { + @apply h-full overflow-hidden; +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 17abf18..5ee6bc4 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,5 +1,14 @@ - + + Header + Sidebar Left + + + + Page Footer + diff --git a/src/themes/kjspkg.ts b/src/themes/kjspkg.ts new file mode 100644 index 0000000..b365bac --- /dev/null +++ b/src/themes/kjspkg.ts @@ -0,0 +1,101 @@ +import type { CustomThemeConfig } from '@skeletonlabs/tw-plugin'; + +export const ThemeKJSPKG: CustomThemeConfig = { + name: 'kjspkg', + properties: { + // =~= Theme Properties =~= + '--theme-font-family-base': `Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`, + '--theme-font-family-heading': `Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`, + '--theme-font-color-base': '0 0 0', + '--theme-font-color-dark': '255 255 255', + '--theme-rounded-base': '9999px', + '--theme-rounded-container': '12px', + '--theme-border-base': '2px', + // =~= Theme On-X Colors =~= + '--on-primary': '0 0 0', + '--on-secondary': '255 255 255', + '--on-tertiary': '0 0 0', + '--on-success': '0 0 0', + '--on-warning': '0 0 0', + '--on-error': '255 255 255', + '--on-surface': '255 255 255', + // =~= Theme Colors =~= + // primary | #c37ee5 + '--color-primary-50': '246 236 251', // #f6ecfb + '--color-primary-100': '243 229 250', // #f3e5fa + '--color-primary-200': '240 223 249', // #f0dff9 + '--color-primary-300': '231 203 245', // #e7cbf5 + '--color-primary-400': '213 165 237', // #d5a5ed + '--color-primary-500': '195 126 229', // #c37ee5 + '--color-primary-600': '176 113 206', // #b071ce + '--color-primary-700': '146 95 172', // #925fac + '--color-primary-800': '117 76 137', // #754c89 + '--color-primary-900': '96 62 112', // #603e70 + // secondary | #4e355a + '--color-secondary-50': '228 225 230', // #e4e1e6 + '--color-secondary-100': '220 215 222', // #dcd7de + '--color-secondary-200': '211 205 214', // #d3cdd6 + '--color-secondary-300': '184 174 189', // #b8aebd + '--color-secondary-400': '131 114 140', // #83728c + '--color-secondary-500': '78 53 90', // #4e355a + '--color-secondary-600': '70 48 81', // #463051 + '--color-secondary-700': '59 40 68', // #3b2844 + '--color-secondary-800': '47 32 54', // #2f2036 + '--color-secondary-900': '38 26 44', // #261a2c + // tertiary | #000000 + '--color-tertiary-50': '217 217 217', // #d9d9d9 + '--color-tertiary-100': '204 204 204', // #cccccc + '--color-tertiary-200': '191 191 191', // #bfbfbf + '--color-tertiary-300': '153 153 153', // #999999 + '--color-tertiary-400': '77 77 77', // #4d4d4d + '--color-tertiary-500': '0 0 0', // #000000 + '--color-tertiary-600': '0 0 0', // #000000 + '--color-tertiary-700': '0 0 0', // #000000 + '--color-tertiary-800': '0 0 0', // #000000 + '--color-tertiary-900': '0 0 0', // #000000 + // success | #7EB77F + '--color-success-50': '236 244 236', // #ecf4ec + '--color-success-100': '229 241 229', // #e5f1e5 + '--color-success-200': '223 237 223', // #dfeddf + '--color-success-300': '203 226 204', // #cbe2cc + '--color-success-400': '165 205 165', // #a5cda5 + '--color-success-500': '126 183 127', // #7EB77F + '--color-success-600': '113 165 114', // #71a572 + '--color-success-700': '95 137 95', // #5f895f + '--color-success-800': '76 110 76', // #4c6e4c + '--color-success-900': '62 90 62', // #3e5a3e + // warning | #000000 + '--color-warning-50': '217 217 217', // #d9d9d9 + '--color-warning-100': '204 204 204', // #cccccc + '--color-warning-200': '191 191 191', // #bfbfbf + '--color-warning-300': '153 153 153', // #999999 + '--color-warning-400': '77 77 77', // #4d4d4d + '--color-warning-500': '0 0 0', // #000000 + '--color-warning-600': '0 0 0', // #000000 + '--color-warning-700': '0 0 0', // #000000 + '--color-warning-800': '0 0 0', // #000000 + '--color-warning-900': '0 0 0', // #000000 + // error | #D41976 + '--color-error-50': '249 221 234', // #f9ddea + '--color-error-100': '246 209 228', // #f6d1e4 + '--color-error-200': '244 198 221', // #f4c6dd + '--color-error-300': '238 163 200', // #eea3c8 + '--color-error-400': '225 94 159', // #e15e9f + '--color-error-500': '212 25 118', // #D41976 + '--color-error-600': '191 23 106', // #bf176a + '--color-error-700': '159 19 89', // #9f1359 + '--color-error-800': '127 15 71', // #7f0f47 + '--color-error-900': '104 12 58', // #680c3a + // surface | #240637 + '--color-surface-50': '222 218 225', // #dedae1 + '--color-surface-100': '211 205 215', // #d3cdd7 + '--color-surface-200': '200 193 205', // #c8c1cd + '--color-surface-300': '167 155 175', // #a79baf + '--color-surface-400': '102 81 115', // #665173 + '--color-surface-500': '36 6 55', // #240637 + '--color-surface-600': '32 5 50', // #200532 + '--color-surface-700': '27 5 41', // #1b0529 + '--color-surface-800': '22 4 33', // #160421 + '--color-surface-900': '18 3 27' // #12031b + } +}; diff --git a/tailwind.config.cjs b/tailwind.config.cjs deleted file mode 100644 index 39daa66..0000000 --- a/tailwind.config.cjs +++ /dev/null @@ -1,15 +0,0 @@ -const typography = require('@tailwindcss/typography'); -const forms = require('@tailwindcss/forms'); - -/** @type {import('tailwindcss').Config}*/ -const config = { - content: ['./src/**/*.{html,js,svelte,ts}'], - - theme: { - extend: {} - }, - - plugins: [forms, typography] -}; - -module.exports = config; diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..c616d8b --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,30 @@ +const typography = require('@tailwindcss/typography'); +const forms = require('@tailwindcss/forms'); +import { skeleton } from '@skeletonlabs/tw-plugin'; + +import { join } from 'path'; +import type { Config } from 'tailwindcss'; + +import { ThemeKJSPKG } from './src/themes/kjspkg'; + +const config = { + darkMode: 'class', + content: [ + './src/**/*.{html,js,svelte,ts}', + join(require.resolve('@skeletonlabs/skeleton'), '../**/*.{html,js,svelte,ts}') + ], + theme: { + extend: {} + }, + plugins: [ + forms, + typography, + skeleton({ + themes: { + custom: [ThemeKJSPKG] + } + }) + ] +} satisfies Config; + +export default config; From fe80ef4b569871b8480888470fe3d92eb6758a04 Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Mon, 25 Dec 2023 15:54:20 +0100 Subject: [PATCH 06/25] minor changes --- .github/workflows/deploy.yml | 48 ++++++ .nojekyll | 0 .vscode/settings.json | 5 + package.json | 7 +- pnpm-lock.yaml | 100 +++++++++--- src/app.pcss | 58 +++++++ src/lib/CenterLoader.svelte | 9 ++ src/lib/HeaderBar.svelte | 73 +++++++++ src/lib/SidebarL.svelte | 31 ++++ src/lib/SidebarR.svelte | 26 +++ src/lib/consts.ts | 14 ++ src/lib/index.ts | 6 +- src/lib/stores.ts | 5 + src/lib/utils.ts | 75 +++++++++ src/routes/+error.svelte | 19 +++ src/routes/+layout.svelte | 65 ++++++-- src/routes/+layout.ts | 2 +- src/routes/+page.svelte | 22 ++- src/routes/p/[package]/+page.svelte | 196 +++++++++++++++++++++++ src/routes/p/[package]/+page.ts | 2 + src/routes/p/[package]/Dependency.svelte | 38 +++++ src/routes/s/+page.svelte | 9 ++ src/routes/s/[query]/+page.svelte | 43 +++++ src/routes/s/[query]/+page.ts | 2 + src/routes/s/[query]/PackageList.svelte | 40 +++++ svelte.config.js | 10 +- 26 files changed, 868 insertions(+), 37 deletions(-) create mode 100644 .github/workflows/deploy.yml create mode 100644 .nojekyll create mode 100644 .vscode/settings.json create mode 100644 src/lib/CenterLoader.svelte create mode 100644 src/lib/HeaderBar.svelte create mode 100644 src/lib/SidebarL.svelte create mode 100644 src/lib/SidebarR.svelte create mode 100644 src/lib/consts.ts create mode 100644 src/lib/stores.ts create mode 100644 src/lib/utils.ts create mode 100644 src/routes/+error.svelte create mode 100644 src/routes/p/[package]/+page.svelte create mode 100644 src/routes/p/[package]/+page.ts create mode 100644 src/routes/p/[package]/Dependency.svelte create mode 100644 src/routes/s/+page.svelte create mode 100644 src/routes/s/[query]/+page.svelte create mode 100644 src/routes/s/[query]/+page.ts create mode 100644 src/routes/s/[query]/PackageList.svelte diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..e655623 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,48 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: ['main'] + +jobs: + build_site: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Install pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + + - name: Install dependencies + run: pnpm install + + - name: build + env: + BASE_PATH: '/${{ github.event.repository.name }}' + run: | + pnpm run build + + - name: Upload Artifacts + uses: actions/upload-pages-artifact@v2 + with: + path: 'build/' + + deploy: + needs: build_site + runs-on: ubuntu-latest + + permissions: + pages: write + id-token: write + + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + steps: + - name: Deploy + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ad18173 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "yaml.schemas": { + "https://json.schemastore.org/github-workflow.json": "file:///run/media/tizu/CodingProjects/kjspkg-lookup/.github/workflows/deploy.yml" + } +} \ No newline at end of file diff --git a/package.json b/package.json index 81fb038..765cc95 100644 --- a/package.json +++ b/package.json @@ -34,5 +34,10 @@ "typescript": "^5.0.0", "vite": "^5.0.3" }, - "type": "module" + "type": "module", + "dependencies": { + "@tabler/icons-svelte": "^2.44.0", + "@types/markdown-it": "^13.0.7", + "markdown-it": "^14.0.0" + } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b75b590..ed003b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,17 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +dependencies: + '@tabler/icons-svelte': + specifier: ^2.44.0 + version: 2.44.0(svelte@4.2.8) + '@types/markdown-it': + specifier: ^13.0.7 + version: 13.0.7 + markdown-it: + specifier: ^14.0.0 + version: 14.0.0 + devDependencies: '@skeletonlabs/skeleton': specifier: ^2.6.1 @@ -79,7 +90,6 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 - dev: true /@esbuild/aix-ppc64@0.19.10: resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==} @@ -307,28 +317,23 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.20 - dev: true /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true /@jridgewell/trace-mapping@0.3.20: resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -553,6 +558,19 @@ packages: - supports-color dev: true + /@tabler/icons-svelte@2.44.0(svelte@4.2.8): + resolution: {integrity: sha512-aEaYhxwix8ciP/lt1vAOVpyKHf9IYYmGJI+R2ITqi7J26kSsfG3OxMqMgtmqpHdTnetM2Agdix/Ld5OlujQ6Gg==} + peerDependencies: + svelte: '>=3 <5' + dependencies: + '@tabler/icons': 2.44.0 + svelte: 4.2.8 + dev: false + + /@tabler/icons@2.44.0: + resolution: {integrity: sha512-WPPtihDcAwEm1QZM9MXQw6+r/R2/qx7KMU1eegsi9DsqBLAb0W2kbt6e/syvd6j9c+6XNpRVBW1ziGqSWQAWOg==} + dev: false + /@tailwindcss/forms@0.5.7(tailwindcss@3.4.0): resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==} peerDependencies: @@ -580,7 +598,21 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true + + /@types/linkify-it@3.0.5: + resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} + dev: false + + /@types/markdown-it@13.0.7: + resolution: {integrity: sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==} + dependencies: + '@types/linkify-it': 3.0.5 + '@types/mdurl': 1.0.5 + dev: false + + /@types/mdurl@1.0.5: + resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} + dev: false /@types/node@20.10.5: resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} @@ -596,7 +628,6 @@ packages: resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -636,11 +667,14 @@ packages: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false + /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 - dev: true /autoprefixer@10.4.16(postcss@8.4.32): resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} @@ -662,7 +696,6 @@ packages: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: dequal: 2.0.3 - dev: true /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -745,7 +778,6 @@ packages: acorn: 8.11.2 estree-walker: 3.0.3 periscopic: 3.1.0 - dev: true /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -787,7 +819,6 @@ packages: dependencies: mdn-data: 2.0.30 source-map-js: 1.0.2 - dev: true /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -815,7 +846,6 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dev: true /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} @@ -850,6 +880,11 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false + /es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true @@ -898,7 +933,6 @@ packages: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.5 - dev: true /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} @@ -1066,7 +1100,6 @@ packages: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: '@types/estree': 1.0.5 - dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1105,9 +1138,14 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true + /linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + dependencies: + uc.micro: 2.0.0 + dev: false + /locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - dev: true /lodash.castarray@4.4.0: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} @@ -1131,11 +1169,25 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: true + + /markdown-it@14.0.0: + resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.0.0 + dev: false /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - dev: true + + /mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + dev: false /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -1282,7 +1334,6 @@ packages: '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 - dev: true /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -1467,6 +1518,11 @@ packages: hasBin: true dev: true + /punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + dev: false + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -1596,7 +1652,6 @@ packages: /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - dev: true /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -1758,7 +1813,6 @@ packages: locate-character: 3.0.0 magic-string: 0.30.5 periscopic: 3.1.0 - dev: true /tailwindcss@3.4.0: resolution: {integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==} @@ -1837,6 +1891,10 @@ packages: hasBin: true dev: true + /uc.micro@2.0.0: + resolution: {integrity: sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==} + dev: false + /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true diff --git a/src/app.pcss b/src/app.pcss index 9147ded..f121559 100644 --- a/src/app.pcss +++ b/src/app.pcss @@ -7,3 +7,61 @@ html, body { @apply h-full overflow-hidden; } + +* { + @apply select-none; +} + +@layer utilities { + .style-markdown h1 { + @apply h1 mb-2 mt-4 font-bold; + } + .style-markdown h2 { + @apply h2 mb-2 mt-4 font-bold; + } + .style-markdown h3 { + @apply h3 mb-2 mt-4 font-bold; + } + + .style-markdown strong { + @apply font-bold; + } + .style-markdown em { + @apply italic; + } + .style-markdown s { + @apply line-through; + } + .style-markdown blockquote { + @apply blockquote p-2; + } + + .style-markdown ol > li { + @apply ml-6 list-decimal; + } + .style-markdown ul > li { + @apply ml-6 list-disc; + } + + .style-markdown pre { + @apply bg-surface-backdrop-token pre w-full overflow-scroll; + } + .style-markdown pre > code { + @apply select-text; + } + + .style-markdown code:not(pre code) { + @apply code select-text; + } + + .style-markdown a { + @apply anchor; + } + .style-markdown img { + @apply rounded-container-token; + } + + .style-markdown table { + @apply table; + } +} diff --git a/src/lib/CenterLoader.svelte b/src/lib/CenterLoader.svelte new file mode 100644 index 0000000..fef859e --- /dev/null +++ b/src/lib/CenterLoader.svelte @@ -0,0 +1,9 @@ + + +
+
+ +
+
diff --git a/src/lib/HeaderBar.svelte b/src/lib/HeaderBar.svelte new file mode 100644 index 0000000..7887838 --- /dev/null +++ b/src/lib/HeaderBar.svelte @@ -0,0 +1,73 @@ + + + inputElement.focus()} /> + + + + + {#if consts.WHERE_TO[$page.route.id ?? ''] != undefined} + + {:else} + + {/if} + + + + +
+
+ +
+ + { + goto(`/s/${searched || '*'}`); + }} + /> +
+
diff --git a/src/lib/SidebarL.svelte b/src/lib/SidebarL.svelte new file mode 100644 index 0000000..72aa791 --- /dev/null +++ b/src/lib/SidebarL.svelte @@ -0,0 +1,31 @@ + + +{#if !sidebarHidden} +
+ {#if !conditionAuthor} +

Same author

+ + {/if} +
+{/if} diff --git a/src/lib/SidebarR.svelte b/src/lib/SidebarR.svelte new file mode 100644 index 0000000..03f4ba9 --- /dev/null +++ b/src/lib/SidebarR.svelte @@ -0,0 +1,26 @@ + + +{#if !sidebarHidden} +
+ {#if !conditionSearch} +

Latest search results

+ + {/if} +
+{/if} diff --git a/src/lib/consts.ts b/src/lib/consts.ts new file mode 100644 index 0000000..11a6177 --- /dev/null +++ b/src/lib/consts.ts @@ -0,0 +1,14 @@ +export default { + LOGO: 'https://raw.githubusercontent.com/Modern-Modpacks/assets/main/Icons/Other/kjspkg.png', + PACKAGES: 'https://raw.githubusercontent.com/Modern-Modpacks/kjspkg/main/pkgs.json', + AVATARS: 'https://avatars.githubusercontent.com/', + NO_SIDEBAR: ['/', '/s/[query]'], + LOCATOR_REGEX: '([^/@$]*)/([^/@$]*)(@[^/@$]*)?(\\$[^@$]*)?', + DOCS_URL_REGEX: 'github.com/([^/]+/[^/]+)/blob/(.*)', + WHERE_TO: { + '/s/[query]': '/', + '/p/[package]': '/s/*' + } as { [key: string]: string }, + // MR_VALID: 'https://api.modrinth.com/v2/project/', + // MR_TARGET: 'https://modrinth.com/mod/' +}; diff --git a/src/lib/index.ts b/src/lib/index.ts index 856f2b6..dcf2b93 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1 +1,5 @@ -// place files you want to import through the `$lib` alias in this folder. +import SidebarR from './SidebarR.svelte'; +import SidebarL from './SidebarL.svelte'; +import HeaderBar from './HeaderBar.svelte'; + +export { SidebarR, SidebarL, HeaderBar }; diff --git a/src/lib/stores.ts b/src/lib/stores.ts new file mode 100644 index 0000000..971b282 --- /dev/null +++ b/src/lib/stores.ts @@ -0,0 +1,5 @@ +import { writable } from 'svelte/store'; + +export const packageListStore = writable<{ [key: string]: string } | undefined>(); +export const filteredPackagesStore = writable<[string, string][]>([]); +export const currentAuthorStore = writable(''); diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..1920f78 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,75 @@ +import { get } from 'svelte/store'; +import consts from './consts'; +import { packageListStore } from './stores'; +import markdownit from 'markdown-it'; + +const md = markdownit({ + html: false, + xhtmlOut: false, + breaks: false, + langPrefix: 'hljs-', + linkify: true, + typographer: true, + quotes: '“”‘’', + highlight: function (/*str, lang*/) { + return ''; + } +}); + +export function filterObjectByKey( + obj: { [key: string]: string }, + searchString: string +): { [key: string]: string } { + const filteredObj: { [key: string]: string } = {}; + for (const [key, value] of Object.entries(obj)) { + if (key.includes(searchString)) { + filteredObj[key] = value; + } + } + return filteredObj; +} + +export async function initPackageList(): Promise { + if (get(packageListStore) == undefined) { + try { + const res = await fetch(consts.PACKAGES); + const json = await res.json(); + packageListStore.set(json); + return true; + } catch { + return false; + } + } + + return true; +} + +export function capitalizeFirstLetter(str: string): string { + return str.charAt(0).toUpperCase() + str.slice(1); +} + +export function packageNameToReadableFormat(str: string): string { + const words = str.split('-'); + const capitalizedWords = words.map((word) => word.charAt(0).toUpperCase() + word.slice(1)); + let result = capitalizedWords.join(' '); + + const replacers = { + kjspkg: 'KJSPKG', + js: 'JS' + }; + + for (const [key, value] of Object.entries(replacers)) { + const regex = new RegExp(key, 'ig'); + result = result.replaceAll(regex, value); + } + + return result; +} + +export function markdownInline(str: string): string { + return md.renderInline(str); +} + +export function markdown(str: string): string { + return md.render(str); +} diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte new file mode 100644 index 0000000..a21980e --- /dev/null +++ b/src/routes/+error.svelte @@ -0,0 +1,19 @@ + diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 5ee6bc4..1d910ef 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,14 +1,61 @@ - - - Header - Sidebar Left - - - - Page Footer + + + + + + + + + + + + +
+ {#key $page.url.pathname} + + {/key} +
+ + + + + +
diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts index 9d6b691..ceccaaf 100644 --- a/src/routes/+layout.ts +++ b/src/routes/+layout.ts @@ -1,2 +1,2 @@ export const prerender = true; -export const csr = false; +export const ssr = false; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 5982b0a..736a470 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,2 +1,20 @@ -

Welcome to SvelteKit

-

Visit kit.svelte.dev to read the documentation

+ + +logo +

KJSPKG

+ +
+ +

+ This website serves as a means to share KJSPKG packages more easily. + Use the search bar above to search for packages, or browse all packages. +

diff --git a/src/routes/p/[package]/+page.svelte b/src/routes/p/[package]/+page.svelte new file mode 100644 index 0000000..9f846f5 --- /dev/null +++ b/src/routes/p/[package]/+page.svelte @@ -0,0 +1,196 @@ + + +{#if state == 'loading'} + +{:else if state == 'ready'} +

+ + {packageNameToReadableFormat($page.params.package) ?? 'This package'} + +

+ +
+ {@html markdownInline(thisPackage.description)} +
+ +
+ + author's profile afirst child cssvatar +
+
Created by
+
+ {locatorInfo[1]} + {locatorInfo[1] != thisPackage.author ? `(${thisPackage.author})` : ''} +
+
+
+ +
+
Available for
+
+ {#each thisPackage.modloaders as t} + {capitalizeFirstLetter(t)} + {/each} + • + {#each thisPackage.versions as t} + {`1.${+t + 10}`} + {/each} +
+
+ + + + + + {#if thisPackage.dependencies.length > 0 || thisPackage.incompatibilities.length > 0} +
+ {#if thisPackage.dependencies.length > 0} +
Depends on
+
+
+ {#each thisPackage.dependencies as t} + + {/each} +
+
+ {/if} + {#if thisPackage.incompatibilities.length > 0} +
Incompatible with
+
+
+ {#each thisPackage.incompatibilities as t} + + {/each} +
+
+ {/if} +
+ {/if} + + {#if docs != ''} +
+
README file
+
{@html docs}
+
+ {/if} +
+{:else if state == 'fail'} +

Something went wrong (this package doesn't seem to exist)

+{/if} diff --git a/src/routes/p/[package]/+page.ts b/src/routes/p/[package]/+page.ts new file mode 100644 index 0000000..b05011b --- /dev/null +++ b/src/routes/p/[package]/+page.ts @@ -0,0 +1,2 @@ +// This page is dynamic. Do not pre-render it. +export const prerender = false; diff --git a/src/routes/p/[package]/Dependency.svelte b/src/routes/p/[package]/Dependency.svelte new file mode 100644 index 0000000..a7d1bad --- /dev/null +++ b/src/routes/p/[package]/Dependency.svelte @@ -0,0 +1,38 @@ + + +{#if t.startsWith('mod:')} + + + +
{t.split(':')[1]}
+
external mod
+
+
+{:else} + + + +
{packageNameToReadableFormat(t)}
+
KJS package
+
+
+{/if} diff --git a/src/routes/s/+page.svelte b/src/routes/s/+page.svelte new file mode 100644 index 0000000..ca898a8 --- /dev/null +++ b/src/routes/s/+page.svelte @@ -0,0 +1,9 @@ + + +

Redirecting to /s/*

\ No newline at end of file diff --git a/src/routes/s/[query]/+page.svelte b/src/routes/s/[query]/+page.svelte new file mode 100644 index 0000000..672fc3c --- /dev/null +++ b/src/routes/s/[query]/+page.svelte @@ -0,0 +1,43 @@ + + +

+ {#if $page.params.query == '*'} + All the packages + {:else} + All the packages matching + {`"${$page.params.query}"`} + {/if} +

+ +{#if state == 'loading'} + +{:else if state == 'ready' && $filteredPackagesStore.length == 0} +

No packages found

+{:else if state == 'ready'} +
+ +
+{:else if state == 'fail'} +

Something went wrong

+{/if} diff --git a/src/routes/s/[query]/+page.ts b/src/routes/s/[query]/+page.ts new file mode 100644 index 0000000..b05011b --- /dev/null +++ b/src/routes/s/[query]/+page.ts @@ -0,0 +1,2 @@ +// This page is dynamic. Do not pre-render it. +export const prerender = false; diff --git a/src/routes/s/[query]/PackageList.svelte b/src/routes/s/[query]/PackageList.svelte new file mode 100644 index 0000000..46375d8 --- /dev/null +++ b/src/routes/s/[query]/PackageList.svelte @@ -0,0 +1,40 @@ + + +{#each p as [name, locator]} + {@const locatorInfo = locator.match(consts.LOCATOR_REGEX) ?? [null, null, null, null, null]} + {@const author = locatorInfo[1]} + {@const repo = locatorInfo[2]} + {@const branch = locatorInfo[3]} + {@const path = locatorInfo[4]} + + + author's profile avatar +
+
{packageNameToReadableFormat(name)}
+
+ {#if branch} + on branch {branch.substring(1)} + {/if} + {#if path} + at path {path.substring(1)} + {/if} + {#if name != repo} + in repo {repo} + {/if} + + by {author} +
+
+
+{/each} diff --git a/svelte.config.js b/svelte.config.js index 5362bca..d697029 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,4 +1,4 @@ -import adapter from '@sveltejs/adapter-static'; +import adapter from "@sveltejs/adapter-static"; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; /** @type {import('@sveltejs/kit').Config} */ @@ -11,7 +11,13 @@ const config = { // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. // If your environment is not supported or you settled on a specific environment, switch out the adapter. // See https://kit.svelte.dev/docs/adapters for more information about adapters. - adapter: adapter() + adapter: adapter({ + fallback: '404.html' + }), + + paths: { + base: 'kjspkg-lookup', // TODO + } } }; From b3a0a875c19e17350cacd3a8fef8295bf60e3011 Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Mon, 25 Dec 2023 15:58:48 +0100 Subject: [PATCH 07/25] github pagees --- svelte.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/svelte.config.js b/svelte.config.js index d697029..19a60cf 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -16,7 +16,7 @@ const config = { }), paths: { - base: 'kjspkg-lookup', // TODO + base: '/kjspkg-lookup', // TODO } } }; From 3458ec79907b38e5c68ceefc30d5096034ae8234 Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Wed, 27 Dec 2023 00:40:52 +0100 Subject: [PATCH 08/25] beta v2: more crappy code, legacy rollback, sorting (sorta, pun intended), author pages, @details, better mobile compat, minor changes --- .gitignore | 2 + package.json | 1 + pnpm-lock.yaml | 20 ++ src/app.pcss | 48 +++- src/lib/CenterLoader.svelte | 2 +- src/lib/HeaderBar.svelte | 139 ++++++++-- src/lib/IconBlank.svelte | 10 + src/lib/SidebarL.svelte | 31 --- src/lib/SidebarR.svelte | 26 -- src/lib/argparse.ts | 80 ++++++ src/lib/consts.ts | 7 +- src/lib/index.ts | 23 +- src/lib/overlays/ContextMenu.svelte | 58 +++++ src/lib/overlays/contextMenu.ts | 68 +++++ src/lib/overlays/overlay.ts | 48 ++++ src/lib/project/Author.svelte | 36 +++ src/lib/project/Dependency.svelte | 63 +++++ src/lib/project/ManagePackage.svelte | 59 +++++ src/lib/project/PackageList.svelte | 84 +++++++ src/lib/project/PackagePreview.svelte | 62 +++++ src/lib/project/Sidebar.svelte | 36 +++ src/lib/stores.ts | 14 +- src/lib/utils.ts | 22 +- src/routes/+error.svelte | 2 +- src/routes/+layout.svelte | 46 +++- src/routes/+page.svelte | 12 +- src/routes/p/[package]/+page.svelte | 101 ++++---- src/routes/p/[package]/Dependency.svelte | 38 --- src/routes/s/+page.svelte | 152 ++++++++++- src/routes/s/{[query] => }/+page.ts | 0 src/routes/s/[query]/+page.svelte | 43 ---- src/routes/s/[query]/PackageList.svelte | 40 --- src/themes/kjspkg-gcat.ts | 101 ++++++++ src/themes/kjspkg-lighter.ts | 101 ++++++++ src/themes/kjspkg.ts | 58 ++--- src/themes/serenity.ts | 101 ++++++++ static/legacy/.css | 306 +++++++++++++++++++++++ static/legacy/.js | 33 +++ static/legacy/index.html | 47 ++++ tailwind.config.ts | 8 +- 40 files changed, 1811 insertions(+), 317 deletions(-) create mode 100644 src/lib/IconBlank.svelte delete mode 100644 src/lib/SidebarL.svelte delete mode 100644 src/lib/SidebarR.svelte create mode 100644 src/lib/argparse.ts create mode 100644 src/lib/overlays/ContextMenu.svelte create mode 100644 src/lib/overlays/contextMenu.ts create mode 100644 src/lib/overlays/overlay.ts create mode 100644 src/lib/project/Author.svelte create mode 100644 src/lib/project/Dependency.svelte create mode 100644 src/lib/project/ManagePackage.svelte create mode 100644 src/lib/project/PackageList.svelte create mode 100644 src/lib/project/PackagePreview.svelte create mode 100644 src/lib/project/Sidebar.svelte delete mode 100644 src/routes/p/[package]/Dependency.svelte rename src/routes/s/{[query] => }/+page.ts (100%) delete mode 100644 src/routes/s/[query]/+page.svelte delete mode 100644 src/routes/s/[query]/PackageList.svelte create mode 100644 src/themes/kjspkg-gcat.ts create mode 100644 src/themes/kjspkg-lighter.ts create mode 100644 src/themes/serenity.ts create mode 100644 static/legacy/.css create mode 100644 static/legacy/.js create mode 100644 static/legacy/index.html diff --git a/.gitignore b/.gitignore index 6635cf5..dd0b7e1 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ node_modules !.env.example vite.config.js.timestamp-* vite.config.ts.timestamp-* + ++layout.server.ts diff --git a/package.json b/package.json index 765cc95..fc85013 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ }, "type": "module", "dependencies": { + "@floating-ui/dom": "^1.5.3", "@tabler/icons-svelte": "^2.44.0", "@types/markdown-it": "^13.0.7", "markdown-it": "^14.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed003b4..1e7b031 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,9 @@ settings: excludeLinksFromLockfile: false dependencies: + '@floating-ui/dom': + specifier: ^1.5.3 + version: 1.5.3 '@tabler/icons-svelte': specifier: ^2.44.0 version: 2.44.0(svelte@4.2.8) @@ -298,6 +301,23 @@ packages: dev: true optional: true + /@floating-ui/core@1.5.2: + resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==} + dependencies: + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/dom@1.5.3: + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + dependencies: + '@floating-ui/core': 1.5.2 + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/utils@0.1.6: + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + dev: false + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} diff --git a/src/app.pcss b/src/app.pcss index f121559..0e9b073 100644 --- a/src/app.pcss +++ b/src/app.pcss @@ -8,10 +8,6 @@ body { @apply h-full overflow-hidden; } -* { - @apply select-none; -} - @layer utilities { .style-markdown h1 { @apply h1 mb-2 mt-4 font-bold; @@ -64,4 +60,48 @@ body { .style-markdown table { @apply table; } + + /* --------- */ + + .style-markdown a > img[alt='kjspkg-available'] { + animation: kjspkgBadge 2s infinite ease-out; + animation-iteration-count: 1; + } +} + +@keyframes kjspkgBadge { + 0% { + filter: hue-rotate(0deg); + } + + 75% { + scale: 100%; + } + 85% { + scale: 110%; + } + 96% { + scale: 100%; + } + + 100% { + filter: hue-rotate(360deg); + } +} + +@layer base { + body { + @apply border-8 border-error-900; + } + body::after { + @apply absolute left-0 top-0 z-50 rounded bg-error-900 p-2 text-sm; + content: 'Work in progress! Expect bugs.'; + } +} + +* { + @apply select-none; +} +:root.color-animated * { + @apply transition-all duration-[2500ms] ease-in-out; } diff --git a/src/lib/CenterLoader.svelte b/src/lib/CenterLoader.svelte index fef859e..4ce51c4 100644 --- a/src/lib/CenterLoader.svelte +++ b/src/lib/CenterLoader.svelte @@ -4,6 +4,6 @@
- +
diff --git a/src/lib/HeaderBar.svelte b/src/lib/HeaderBar.svelte index 7887838..325ca84 100644 --- a/src/lib/HeaderBar.svelte +++ b/src/lib/HeaderBar.svelte @@ -1,53 +1,117 @@ inputElement.focus()} /> {#if consts.WHERE_TO[$page.route.id ?? ''] != undefined} - {:else} - {/if} - -
-
- +
+ { - goto(`/s/${searched || '*'}`); - }} + on:focus={() => (showOverlay = true)} + on:blur={() => (showOverlay = false)} + on:change={() => goto(base + `/s?q=${encodeURIComponent(searched || '')}`)} />
+ + + + + +
+ TODO: top 3 results for quick access? idk, maybe that or something different (or maybe nothing at + all) hehe :3 +
diff --git a/src/lib/IconBlank.svelte b/src/lib/IconBlank.svelte new file mode 100644 index 0000000..9734188 --- /dev/null +++ b/src/lib/IconBlank.svelte @@ -0,0 +1,10 @@ + + + diff --git a/src/lib/SidebarL.svelte b/src/lib/SidebarL.svelte deleted file mode 100644 index 72aa791..0000000 --- a/src/lib/SidebarL.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - -{#if !sidebarHidden} -
- {#if !conditionAuthor} -

Same author

- - {/if} -
-{/if} diff --git a/src/lib/SidebarR.svelte b/src/lib/SidebarR.svelte deleted file mode 100644 index 03f4ba9..0000000 --- a/src/lib/SidebarR.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - -{#if !sidebarHidden} -
- {#if !conditionSearch} -

Latest search results

- - {/if} -
-{/if} diff --git a/src/lib/argparse.ts b/src/lib/argparse.ts new file mode 100644 index 0000000..bfd6737 --- /dev/null +++ b/src/lib/argparse.ts @@ -0,0 +1,80 @@ +export function parseInputString(input: string) { + let result: { ROOT: string; [key: string]: string | undefined } = { ROOT: '' }; + let splitInput = input.split(' '); + + for (let i = 0; i < splitInput.length; i++) { + if (!splitInput[i].startsWith('@')) { + result['ROOT'] += splitInput[i] + ' '; + continue; + } + + if (!splitInput[i].includes(':')) { + result['_' + splitInput[i].slice(1)] = 'i'; + continue; + } + + let [key, value] = splitInput[i].split(':'); + if (key == 'ROOT' || key.startsWith('_')) continue; + key = key.slice(1); + + if (value.startsWith('"') && !value.endsWith('"')) { + for (let j = i + 1; j < splitInput.length; j++) { + value += ' ' + splitInput[j]; + i++; + + if (splitInput[j].endsWith('"')) break; + } + value = value.slice(1, -1); + } + + if (!result[key]) result[key] = ''; + result[key] += value + ' '; + } + + for (const [key, value] of Object.entries(result)) { + if (!value) continue; + + delete result[key]; + result[key == 'ROOT' ? 'ROOT' : key.toLowerCase()] = value.trim(); + } + + console.info('Parsed input: ', result); + + return result; +} + +export function generateInputString(inputObject: { + ROOT: string; + [key: string]: string | undefined; +}) { + let result = ''; + + // Add ROOT value + result += inputObject.ROOT.trim() + ' '; + + // Add other key-value pairs + for (const [key, value] of Object.entries(inputObject)) { + if (key === 'ROOT') continue; + if (!value) continue; + + let formattedValue = value; + + // Check if quotes are needed for the value + if (formattedValue.includes(' ') || formattedValue.includes(':')) { + formattedValue = `"${formattedValue}"`; + } + + // Check if the key starts with an underscore + if (key.startsWith('_')) { + result += `@${key.slice(1)} `; + } else { + result += `@${key}:${formattedValue} `; + } + } + + result.replaceAll(/\s+/g, ' '); + + console.info('Generated input string: ', result.trim()); + + return result.trim(); +} diff --git a/src/lib/consts.ts b/src/lib/consts.ts index 11a6177..3164f38 100644 --- a/src/lib/consts.ts +++ b/src/lib/consts.ts @@ -2,13 +2,14 @@ export default { LOGO: 'https://raw.githubusercontent.com/Modern-Modpacks/assets/main/Icons/Other/kjspkg.png', PACKAGES: 'https://raw.githubusercontent.com/Modern-Modpacks/kjspkg/main/pkgs.json', AVATARS: 'https://avatars.githubusercontent.com/', - NO_SIDEBAR: ['/', '/s/[query]'], + NO_SIDEBAR: ['/'], LOCATOR_REGEX: '([^/@$]*)/([^/@$]*)(@[^/@$]*)?(\\$[^@$]*)?', DOCS_URL_REGEX: 'github.com/([^/]+/[^/]+)/blob/(.*)', WHERE_TO: { - '/s/[query]': '/', - '/p/[package]': '/s/*' + '/s': '/', + '/p/[package]': '/s' } as { [key: string]: string }, + KJSPKG_README: 'https://github.com/Modern-Modpacks/kjspkg#kjspkg' // MR_VALID: 'https://api.modrinth.com/v2/project/', // MR_TARGET: 'https://modrinth.com/mod/' }; diff --git a/src/lib/index.ts b/src/lib/index.ts index dcf2b93..1db6746 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,5 +1,22 @@ -import SidebarR from './SidebarR.svelte'; -import SidebarL from './SidebarL.svelte'; +import Author from './project/Author.svelte'; +import Dependency from './project/Dependency.svelte'; +import ManagePackage from './project/ManagePackage.svelte'; +import PackageList from './project/PackageList.svelte'; +import PackagePreview from './project/PackagePreview.svelte'; +import Sidebar from './project/Sidebar.svelte'; + import HeaderBar from './HeaderBar.svelte'; +import IconBlank from './IconBlank.svelte'; +import CenterLoader from './CenterLoader.svelte'; -export { SidebarR, SidebarL, HeaderBar }; +export { + Author, + Dependency, + ManagePackage, + PackageList, + PackagePreview, + Sidebar, + HeaderBar, + IconBlank, + CenterLoader +}; diff --git a/src/lib/overlays/ContextMenu.svelte b/src/lib/overlays/ContextMenu.svelte new file mode 100644 index 0000000..c963dac --- /dev/null +++ b/src/lib/overlays/ContextMenu.svelte @@ -0,0 +1,58 @@ + + +{#if $contextMenuStore} + + {/if} + {:else} + no items + {/each} +
+
+{/if} diff --git a/src/lib/overlays/contextMenu.ts b/src/lib/overlays/contextMenu.ts new file mode 100644 index 0000000..9f52015 --- /dev/null +++ b/src/lib/overlays/contextMenu.ts @@ -0,0 +1,68 @@ +import { writable } from 'svelte/store'; + +export type ContextMenuProps = { + initiator: 'left' | 'right' | 'left-right'; + items: ContextMenuItem[]; +}; +export type ContextMenuItem = + | { type: 'ITEM'; label: string; icon?: ConstructorOfATypedSvelteComponent; action: () => void } + | { type: 'SEPARATOR'; header?: string }; +// | { type: 'TOGGLE'; label: string; icon?: ConstructorOfATypedSvelteComponent; action: () => void, checked: boolean }; + +export function contextMenu(node: HTMLElement, initialProps: ContextMenuProps) { + let props = initialProps; + + async function callback(e: MouseEvent) { + let x = e.clientX + 5; + let y = e.clientY + 5; + + contextMenuStore.set({ + x, + y, + invisible: true, + ...props + }); + + await new Promise((r) => setTimeout(r, 1)); + const menu = document.querySelector('#GLOBAL-ctxm') as HTMLDivElement; + + // Get dimensions of menu + let menuX = menu.offsetWidth; + let menuY = menu.offsetHeight; + + // Get viewport size + let viewportX = window.innerWidth; + let viewportY = window.innerHeight; + + // menu should be away from viewport border. + if (menuX + x > viewportX - 20) x = viewportX - menuX - 20; + if (menuY + y > viewportY - 20) y = viewportY - menuY - 20; + + contextMenuStore.set({ + x, + y, + invisible: false, + ...props + }); + } + + node.addEventListener('contextmenu', (e) => { + if (!(props.initiator == 'right' || props.initiator == 'left-right')) return; + setTimeout(() => callback(e)); + e.preventDefault(); + }); + node.addEventListener('click', (e) => { + if (!(props.initiator == 'left' || props.initiator == 'left-right')) return; + setTimeout(() => callback(e)); + }); + + return { + update(newProps: ContextMenuProps) { + props = newProps; + } + }; +} + +export const contextMenuStore = writable< + (ContextMenuProps & { x: number; y: number; invisible: boolean }) | undefined +>(); diff --git a/src/lib/overlays/overlay.ts b/src/lib/overlays/overlay.ts new file mode 100644 index 0000000..be93709 --- /dev/null +++ b/src/lib/overlays/overlay.ts @@ -0,0 +1,48 @@ +export interface OverlayProps { + visible: boolean; + pos: { x: number; y: number; w?: string; h?: string }; +} + +export function triggerOverlay(menu: HTMLElement, _: OverlayProps) { + return { + update: (props: OverlayProps) => { + console.info('rerendering'); + const { visible, pos } = props; + + menu.style.display = visible ? 'block' : 'none'; + + menu.style.left = pos.x + 'px'; + menu.style.top = pos.y + 'px'; + menu.style.width = pos.w || 'auto'; + menu.style.height = pos.h || 'auto'; + + // Get dimensions of menu + let menuX = menu.offsetWidth; + let menuY = menu.offsetHeight; + + // Get viewport size + let viewportX = window.innerWidth; + let viewportY = window.innerHeight; + + // menu should be away from viewport border. + if (menuX + pos.x > viewportX - 20) pos.x = viewportX - menuX - 20; + if (menuY + pos.y > viewportY - 20) pos.y = viewportY - menuY - 20; + + menu.style.left = pos.x + 'px'; + menu.style.top = pos.y + 'px'; + menu.style.width = pos.w || 'auto'; + menu.style.height = pos.h || 'auto'; + } + }; +} + +export function getPos(node: HTMLElement) { + if (!node) return { x: 0, y: 0, w: 0, h: 0 }; + + return { + x: node.offsetLeft, + y: node.offsetTop, + w: node.offsetWidth, + h: node.offsetHeight + }; +} diff --git a/src/lib/project/Author.svelte b/src/lib/project/Author.svelte new file mode 100644 index 0000000..9134196 --- /dev/null +++ b/src/lib/project/Author.svelte @@ -0,0 +1,36 @@ + + +
+ {#if showAvatar} + author's profile avatar + {/if} +
+
{author}
+ {#if c > 0} +
+ owns {c} + {c == 1 ? 'package' : 'packages'} +
+ {/if} +
+ {#if showGit} + + + + {/if} +
diff --git a/src/lib/project/Dependency.svelte b/src/lib/project/Dependency.svelte new file mode 100644 index 0000000..2f5272b --- /dev/null +++ b/src/lib/project/Dependency.svelte @@ -0,0 +1,63 @@ + + +{#if t.startsWith('mod:')} + +{:else} + + + +
{packageNameToReadableFormat(t)}
+
KJS package
+
+
+ + +{/if} diff --git a/src/lib/project/ManagePackage.svelte b/src/lib/project/ManagePackage.svelte new file mode 100644 index 0000000..742baaf --- /dev/null +++ b/src/lib/project/ManagePackage.svelte @@ -0,0 +1,59 @@ + + +{#each ['install', 'remove', 'update', '', 'pkg'] as t} + {#if t} + + {:else} +
+ {/if} +{/each} + +
+

+ In case you aren't aware, you need the + KJSPKG + tool to install this package! +

+
+
+

+ Got an issue? Need help? Use this packages + issue tracker + to let us know! +

+
+ +
+
diff --git a/src/lib/project/PackageList.svelte b/src/lib/project/PackageList.svelte new file mode 100644 index 0000000..e5c03c7 --- /dev/null +++ b/src/lib/project/PackageList.svelte @@ -0,0 +1,84 @@ + + +{#each sortedP as [name, locator], i (name)} + {@const locatorInfo = locator.match(consts.LOCATOR_REGEX) ?? [null, null, null, null, null]} + {@const author = locatorInfo[1]} + {@const repo = locatorInfo[2]} + {@const branch = locatorInfo[3]} + {@const path = locatorInfo[4]} + + dispatch('select', name)} + class:!variant-filled-primary={$page.params.package == name} + animate:flip={{ delay: i * 25, duration: 1000 }} + transition:fade={{ delay: i * 25, duration: 300 }} + > + {#if showAvatar} + author's profile avatar + {/if} +
+
{packageNameToReadableFormat(name)}
+
+ {#if branch && showDetails} + on branch {branch.substring(1)} + {/if} + {#if path && showDetails} + at path {path.substring(1)} + {/if} + {#if name != repo && showDetails} + in repo {repo} + {/if} + + {#if showName} + by {author} + {/if} +
+
+
+{/each} diff --git a/src/lib/project/PackagePreview.svelte b/src/lib/project/PackagePreview.svelte new file mode 100644 index 0000000..d016b90 --- /dev/null +++ b/src/lib/project/PackagePreview.svelte @@ -0,0 +1,62 @@ + + +
+
+
Package preview
+ {#if state == 'loading'} + + {:else if state == 'ready'} +
+ {@html markdownInline(thisPackage.description)} +
+
+ {locatorInfo[1]} +
+ {:else if state == 'fail'} +
Something went wrong (this package doesn't seem to exist)
+ {/if} +
+
diff --git a/src/lib/project/Sidebar.svelte b/src/lib/project/Sidebar.svelte new file mode 100644 index 0000000..08000f9 --- /dev/null +++ b/src/lib/project/Sidebar.svelte @@ -0,0 +1,36 @@ + + +{#if !sidebarHidden} + {@const o = $packageStatusStore} +
+ + + {#if o.search.v && o.search.d.length > 0 && !o.search.hidePaths.includes($page.route.id ?? '')} +

Search results

+ + {/if} +
+{/if} diff --git a/src/lib/stores.ts b/src/lib/stores.ts index 971b282..848137e 100644 --- a/src/lib/stores.ts +++ b/src/lib/stores.ts @@ -1,5 +1,17 @@ +import { localStorageStore } from '@skeletonlabs/skeleton'; import { writable } from 'svelte/store'; export const packageListStore = writable<{ [key: string]: string } | undefined>(); -export const filteredPackagesStore = writable<[string, string][]>([]); +export const packageStatusStore = writable<{ + [key: string]: { d: [string, string][]; v: boolean; hidePaths: string[] }; +}>({ + // back: { d: [], v: true, hidePaths: [] }, + search: { d: [], v: false, hidePaths: ['/s'] } +}); export const currentAuthorStore = writable(''); + +export const userPreferencesStore = localStorageStore<{ + sortBy: '' | 'name' | 'author' | 'downloads' | 'views'; + theme: string; + lightMode: boolean; +}>('preferences', { sortBy: 'name', theme: 'kjspkg', lightMode: false }); diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 1920f78..fe604de 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,7 +1,10 @@ +import { goto } from '$app/navigation'; +import { base } from '$app/paths'; +import { page } from '$app/stores'; +import markdownit from 'markdown-it'; import { get } from 'svelte/store'; import consts from './consts'; import { packageListStore } from './stores'; -import markdownit from 'markdown-it'; const md = markdownit({ html: false, @@ -73,3 +76,20 @@ export function markdownInline(str: string): string { export function markdown(str: string): string { return md.render(str); } + +import { generateInputString, parseInputString } from './argparse'; +export { generateInputString, parseInputString }; + +export function removeBase(target: string, base: string): string { + return target.replace(base, ''); +} + +export function goBack() { + const sPage = get(page); + + for (const path of [removeBase(sPage.url.pathname, base), sPage.route.id]) + if (path && consts.WHERE_TO[path]) { + goto(base + consts.WHERE_TO[path]); + break; + } +} diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte index a21980e..1d859ce 100644 --- a/src/routes/+error.svelte +++ b/src/routes/+error.svelte @@ -12,7 +12,7 @@ message: `${$page.error?.message}`, hideDismiss: true, timeout: 5000, - background: 'variant-glass-error' + background: 'variant-filled-error' }); goto(base + '/'); }); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 1d910ef..bd9c644 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,29 +1,53 @@ - + + + + +{#if navigating} +
+ +
+{/if} - + - + -
{#key $page.url.pathname} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 736a470..3e46079 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -9,12 +9,16 @@ } -logo -

KJSPKG

+logo +

KJSPKG


- This website serves as a means to share KJSPKG packages more easily. - Use the search bar above to search for packages, or browse all packages. + This website serves as a means to share KJSPKG packages more easily. Use the search bar above to + search for packages, or browse all packages. +

+

+ Think something's missing? Please report it to us. For the time being, you can alternatively use + the old legacy lookup.

diff --git a/src/routes/p/[package]/+page.svelte b/src/routes/p/[package]/+page.svelte index 9f846f5..4268b2a 100644 --- a/src/routes/p/[package]/+page.svelte +++ b/src/routes/p/[package]/+page.svelte @@ -1,20 +1,20 @@ - -{#if t.startsWith('mod:')} - - - -
{t.split(':')[1]}
-
external mod
-
-
-{:else} - - - -
{packageNameToReadableFormat(t)}
-
KJS package
-
-
-{/if} diff --git a/src/routes/s/+page.svelte b/src/routes/s/+page.svelte index ca898a8..5cd9048 100644 --- a/src/routes/s/+page.svelte +++ b/src/routes/s/+page.svelte @@ -1,9 +1,155 @@ -

Redirecting to /s/*

\ No newline at end of file +
+

+ {#if !$page.url.searchParams.get('q')} + {$packageStatusStore.search.d.length} packages available + {:else} + Found + {resultedFilter.length} + {resultedFilter.length == 1 ? 'package' : 'packages'} + + {#if queryParams.author && filteredAuthor.length > 0} + + made by + + {queryParams.author} + + + {/if} + {#if queryParams.ROOT != ''} + matching {`"${queryParams.ROOT}"`} + {/if} + {#if queryParams._details == 'i'} + (detailed) + {/if} + {/if} +

+ +
+ + + {#if queryParams._details != 'i'} + + {/if} +
+
+ +{#if queryParams.author && filteredAuthor.length > 0} + +{/if} + +{#if state == 'loading'} + +{:else if state == 'ready' && resultedFilter.length == 0} +

Here, have a cookie, if that makes you feel any better: 🍪

+

+ Fun fact: You can use '@author:name' to view packages made by an author. What 'bout using + '@details' to get technical details on each package? +

+{:else if state == 'ready'} +
+ +
+{:else if state == 'fail'} +

Something went wrong

+{/if} diff --git a/src/routes/s/[query]/+page.ts b/src/routes/s/+page.ts similarity index 100% rename from src/routes/s/[query]/+page.ts rename to src/routes/s/+page.ts diff --git a/src/routes/s/[query]/+page.svelte b/src/routes/s/[query]/+page.svelte deleted file mode 100644 index 672fc3c..0000000 --- a/src/routes/s/[query]/+page.svelte +++ /dev/null @@ -1,43 +0,0 @@ - - -

- {#if $page.params.query == '*'} - All the packages - {:else} - All the packages matching - {`"${$page.params.query}"`} - {/if} -

- -{#if state == 'loading'} - -{:else if state == 'ready' && $filteredPackagesStore.length == 0} -

No packages found

-{:else if state == 'ready'} -
- -
-{:else if state == 'fail'} -

Something went wrong

-{/if} diff --git a/src/routes/s/[query]/PackageList.svelte b/src/routes/s/[query]/PackageList.svelte deleted file mode 100644 index 46375d8..0000000 --- a/src/routes/s/[query]/PackageList.svelte +++ /dev/null @@ -1,40 +0,0 @@ - - -{#each p as [name, locator]} - {@const locatorInfo = locator.match(consts.LOCATOR_REGEX) ?? [null, null, null, null, null]} - {@const author = locatorInfo[1]} - {@const repo = locatorInfo[2]} - {@const branch = locatorInfo[3]} - {@const path = locatorInfo[4]} - - - author's profile avatar -
-
{packageNameToReadableFormat(name)}
-
- {#if branch} - on branch {branch.substring(1)} - {/if} - {#if path} - at path {path.substring(1)} - {/if} - {#if name != repo} - in repo {repo} - {/if} - - by {author} -
-
-
-{/each} diff --git a/src/themes/kjspkg-gcat.ts b/src/themes/kjspkg-gcat.ts new file mode 100644 index 0000000..474d652 --- /dev/null +++ b/src/themes/kjspkg-gcat.ts @@ -0,0 +1,101 @@ +import type { CustomThemeConfig } from '@skeletonlabs/tw-plugin'; + +export const ThemeKjspkgGcat: CustomThemeConfig = { + name: 'kjspkg-gcat', + properties: { + // =~= Theme Properties =~= + '--theme-font-family-base': `Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`, + '--theme-font-family-heading': `Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`, + '--theme-font-color-base': '0 0 0', + '--theme-font-color-dark': 'var(--color-surface-50)', + '--theme-rounded-base': '9999px', + '--theme-rounded-container': '12px', + '--theme-border-base': '2px', + // =~= Theme On-X Colors =~= + '--on-primary': 'var(--color-surface-900)', + '--on-secondary': 'var(--color-surface-50)', + '--on-tertiary': '0 0 0', + '--on-success': 'var(--color-surface-900)', + '--on-warning': '0 0 0', + '--on-error': 'var(--color-surface-50)', + '--on-surface': 'var(--color-surface-50)', + // =~= Theme Colors =~= + // primary | #c37ee5 + '--color-primary-50': '246 236 251', // #f6ecfb + '--color-primary-100': '243 229 250', // #f3e5fa + '--color-primary-200': '240 223 249', // #f0dff9 + '--color-primary-300': '231 203 245', // #e7cbf5 + '--color-primary-400': '213 165 237', // #d5a5ed + '--color-primary-500': '195 126 229', // #c37ee5 + '--color-primary-600': '176 113 206', // #b071ce + '--color-primary-700': '146 95 172', // #925fac + '--color-primary-800': '117 76 137', // #754c89 + '--color-primary-900': '96 62 112', // #603e70 + // secondary | #6b10a3 + '--color-secondary-50': '233 219 241', // #e9dbf1 + '--color-secondary-100': '225 207 237', // #e1cfed + '--color-secondary-200': '218 195 232', // #dac3e8 + '--color-secondary-300': '196 159 218', // #c49fda + '--color-secondary-400': '151 88 191', // #9758bf + '--color-secondary-500': '107 16 163', // #6b10a3 + '--color-secondary-600': '96 14 147', // #600e93 + '--color-secondary-700': '80 12 122', // #500c7a + '--color-secondary-800': '64 10 98', // #400a62 + '--color-secondary-900': '52 8 80', // #340850 + // tertiary | #000000 + '--color-tertiary-50': '217 217 217', // #d9d9d9 + '--color-tertiary-100': '204 204 204', // #cccccc + '--color-tertiary-200': '191 191 191', // #bfbfbf + '--color-tertiary-300': '153 153 153', // #999999 + '--color-tertiary-400': '77 77 77', // #4d4d4d + '--color-tertiary-500': '0 0 0', // #000000 + '--color-tertiary-600': '0 0 0', // #000000 + '--color-tertiary-700': '0 0 0', // #000000 + '--color-tertiary-800': '0 0 0', // #000000 + '--color-tertiary-900': '0 0 0', // #000000 + // success | #8ee190 + '--color-success-50': '238 251 238', // #eefbee + '--color-success-100': '232 249 233', // #e8f9e9 + '--color-success-200': '227 248 227', // #e3f8e3 + '--color-success-300': '210 243 211', // #d2f3d3 + '--color-success-400': '176 234 177', // #b0eab1 + '--color-success-500': '142 225 144', // #8ee190 + '--color-success-600': '128 203 130', // #80cb82 + '--color-success-700': '107 169 108', // #6ba96c + '--color-success-800': '85 135 86', // #558756 + '--color-success-900': '70 110 71', // #466e47 + // warning | #000000 + '--color-warning-50': '217 217 217', // #d9d9d9 + '--color-warning-100': '204 204 204', // #cccccc + '--color-warning-200': '191 191 191', // #bfbfbf + '--color-warning-300': '153 153 153', // #999999 + '--color-warning-400': '77 77 77', // #4d4d4d + '--color-warning-500': '0 0 0', // #000000 + '--color-warning-600': '0 0 0', // #000000 + '--color-warning-700': '0 0 0', // #000000 + '--color-warning-800': '0 0 0', // #000000 + '--color-warning-900': '0 0 0', // #000000 + // error | #b11061 + '--color-error-50': '243 219 231', // #f3dbe7 + '--color-error-100': '239 207 223', // #efcfdf + '--color-error-200': '236 195 216', // #ecc3d8 + '--color-error-300': '224 159 192', // #e09fc0 + '--color-error-400': '200 88 144', // #c85890 + '--color-error-500': '177 16 97', // #b11061 + '--color-error-600': '159 14 87', // #9f0e57 + '--color-error-700': '133 12 73', // #850c49 + '--color-error-800': '106 10 58', // #6a0a3a + '--color-error-900': '87 8 48', // #570830 + // surface | #9118dd + '--color-surface-50': '239 220 250', // #efdcfa + '--color-surface-100': '233 209 248', // #e9d1f8 + '--color-surface-200': '228 197 247', // #e4c5f7 + '--color-surface-300': '211 163 241', // #d3a3f1 + '--color-surface-400': '178 93 231', // #b25de7 + '--color-surface-500': '145 24 221', // #9118dd + '--color-surface-600': '131 22 199', // #8316c7 + '--color-surface-700': '109 18 166', // #6d12a6 + '--color-surface-800': '87 14 133', // #570e85 + '--color-surface-900': '68 11 103' // #440b67 + } +}; diff --git a/src/themes/kjspkg-lighter.ts b/src/themes/kjspkg-lighter.ts new file mode 100644 index 0000000..6ed4469 --- /dev/null +++ b/src/themes/kjspkg-lighter.ts @@ -0,0 +1,101 @@ +import type { CustomThemeConfig } from '@skeletonlabs/tw-plugin'; + +export const ThemeKjspkgLighter: CustomThemeConfig = { + name: 'kjspkg-lighter', + properties: { + // =~= Theme Properties =~= + '--theme-font-family-base': `Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`, + '--theme-font-family-heading': `Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`, + '--theme-font-color-base': '0 0 0', + '--theme-font-color-dark': 'var(--color-surface-50)', + '--theme-rounded-base': '9999px', + '--theme-rounded-container': '12px', + '--theme-border-base': '2px', + // =~= Theme On-X Colors =~= + '--on-primary': 'var(--color-surface-900)', + '--on-secondary': 'var(--color-surface-50)', + '--on-tertiary': '0 0 0', + '--on-success': 'var(--color-surface-900)', + '--on-warning': '0 0 0', + '--on-error': 'var(--color-surface-50)', + '--on-surface': 'var(--color-surface-50)', + // =~= Theme Colors =~= + // primary | #c37ee5 + '--color-primary-50': '246 236 251', // #f6ecfb + '--color-primary-100': '243 229 250', // #f3e5fa + '--color-primary-200': '240 223 249', // #f0dff9 + '--color-primary-300': '231 203 245', // #e7cbf5 + '--color-primary-400': '213 165 237', // #d5a5ed + '--color-primary-500': '195 126 229', // #c37ee5 + '--color-primary-600': '176 113 206', // #b071ce + '--color-primary-700': '146 95 172', // #925fac + '--color-primary-800': '117 76 137', // #754c89 + '--color-primary-900': '96 62 112', // #603e70 + // secondary | #4e355a + '--color-secondary-50': '228 225 230', // #e4e1e6 + '--color-secondary-100': '220 215 222', // #dcd7de + '--color-secondary-200': '211 205 214', // #d3cdd6 + '--color-secondary-300': '184 174 189', // #b8aebd + '--color-secondary-400': '131 114 140', // #83728c + '--color-secondary-500': '78 53 90', // #4e355a + '--color-secondary-600': '70 48 81', // #463051 + '--color-secondary-700': '59 40 68', // #3b2844 + '--color-secondary-800': '47 32 54', // #2f2036 + '--color-secondary-900': '38 26 44', // #261a2c + // tertiary | #000000 + '--color-tertiary-50': '217 217 217', // #d9d9d9 + '--color-tertiary-100': '204 204 204', // #cccccc + '--color-tertiary-200': '191 191 191', // #bfbfbf + '--color-tertiary-300': '153 153 153', // #999999 + '--color-tertiary-400': '77 77 77', // #4d4d4d + '--color-tertiary-500': '0 0 0', // #000000 + '--color-tertiary-600': '0 0 0', // #000000 + '--color-tertiary-700': '0 0 0', // #000000 + '--color-tertiary-800': '0 0 0', // #000000 + '--color-tertiary-900': '0 0 0', // #000000 + // success | #8ee190 + '--color-success-50': '238 251 238', // #eefbee + '--color-success-100': '232 249 233', // #e8f9e9 + '--color-success-200': '227 248 227', // #e3f8e3 + '--color-success-300': '210 243 211', // #d2f3d3 + '--color-success-400': '176 234 177', // #b0eab1 + '--color-success-500': '142 225 144', // #8ee190 + '--color-success-600': '128 203 130', // #80cb82 + '--color-success-700': '107 169 108', // #6ba96c + '--color-success-800': '85 135 86', // #558756 + '--color-success-900': '70 110 71', // #466e47 + // warning | #000000 + '--color-warning-50': '217 217 217', // #d9d9d9 + '--color-warning-100': '204 204 204', // #cccccc + '--color-warning-200': '191 191 191', // #bfbfbf + '--color-warning-300': '153 153 153', // #999999 + '--color-warning-400': '77 77 77', // #4d4d4d + '--color-warning-500': '0 0 0', // #000000 + '--color-warning-600': '0 0 0', // #000000 + '--color-warning-700': '0 0 0', // #000000 + '--color-warning-800': '0 0 0', // #000000 + '--color-warning-900': '0 0 0', // #000000 + // error | #b11061 + '--color-error-50': '243 219 231', // #f3dbe7 + '--color-error-100': '239 207 223', // #efcfdf + '--color-error-200': '236 195 216', // #ecc3d8 + '--color-error-300': '224 159 192', // #e09fc0 + '--color-error-400': '200 88 144', // #c85890 + '--color-error-500': '177 16 97', // #b11061 + '--color-error-600': '159 14 87', // #9f0e57 + '--color-error-700': '133 12 73', // #850c49 + '--color-error-800': '106 10 58', // #6a0a3a + '--color-error-900': '87 8 48', // #570830 + // surface | #633e79 + '--color-surface-50': '232 226 235', // #e8e2eb + '--color-surface-100': '224 216 228', // #e0d8e4 + '--color-surface-200': '216 207 222', // #d8cfde + '--color-surface-300': '193 178 201', // #c1b2c9 + '--color-surface-400': '146 120 161', // #9278a1 + '--color-surface-500': '99 62 121', // #633e79 + '--color-surface-600': '89 56 109', // #59386d + '--color-surface-700': '74 47 91', // #4a2f5b + '--color-surface-800': '59 37 73', // #3b2549 + '--color-surface-900': '49 30 59' // #311e3b + } +}; diff --git a/src/themes/kjspkg.ts b/src/themes/kjspkg.ts index b365bac..1dac082 100644 --- a/src/themes/kjspkg.ts +++ b/src/themes/kjspkg.ts @@ -1,24 +1,24 @@ import type { CustomThemeConfig } from '@skeletonlabs/tw-plugin'; -export const ThemeKJSPKG: CustomThemeConfig = { +export const ThemeKjspkg: CustomThemeConfig = { name: 'kjspkg', properties: { // =~= Theme Properties =~= '--theme-font-family-base': `Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`, '--theme-font-family-heading': `Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`, '--theme-font-color-base': '0 0 0', - '--theme-font-color-dark': '255 255 255', + '--theme-font-color-dark': 'var(--color-surface-50)', '--theme-rounded-base': '9999px', '--theme-rounded-container': '12px', '--theme-border-base': '2px', // =~= Theme On-X Colors =~= - '--on-primary': '0 0 0', - '--on-secondary': '255 255 255', + '--on-primary': 'var(--color-surface-900)', + '--on-secondary': 'var(--color-surface-50)', '--on-tertiary': '0 0 0', - '--on-success': '0 0 0', + '--on-success': 'var(--color-surface-900)', '--on-warning': '0 0 0', - '--on-error': '255 255 255', - '--on-surface': '255 255 255', + '--on-error': 'var(--color-surface-50)', + '--on-surface': 'var(--color-surface-50)', // =~= Theme Colors =~= // primary | #c37ee5 '--color-primary-50': '246 236 251', // #f6ecfb @@ -53,17 +53,17 @@ export const ThemeKJSPKG: CustomThemeConfig = { '--color-tertiary-700': '0 0 0', // #000000 '--color-tertiary-800': '0 0 0', // #000000 '--color-tertiary-900': '0 0 0', // #000000 - // success | #7EB77F - '--color-success-50': '236 244 236', // #ecf4ec - '--color-success-100': '229 241 229', // #e5f1e5 - '--color-success-200': '223 237 223', // #dfeddf - '--color-success-300': '203 226 204', // #cbe2cc - '--color-success-400': '165 205 165', // #a5cda5 - '--color-success-500': '126 183 127', // #7EB77F - '--color-success-600': '113 165 114', // #71a572 - '--color-success-700': '95 137 95', // #5f895f - '--color-success-800': '76 110 76', // #4c6e4c - '--color-success-900': '62 90 62', // #3e5a3e + // success | #8ee190 + '--color-success-50': '238 251 238', // #eefbee + '--color-success-100': '232 249 233', // #e8f9e9 + '--color-success-200': '227 248 227', // #e3f8e3 + '--color-success-300': '210 243 211', // #d2f3d3 + '--color-success-400': '176 234 177', // #b0eab1 + '--color-success-500': '142 225 144', // #8ee190 + '--color-success-600': '128 203 130', // #80cb82 + '--color-success-700': '107 169 108', // #6ba96c + '--color-success-800': '85 135 86', // #558756 + '--color-success-900': '70 110 71', // #466e47 // warning | #000000 '--color-warning-50': '217 217 217', // #d9d9d9 '--color-warning-100': '204 204 204', // #cccccc @@ -75,17 +75,17 @@ export const ThemeKJSPKG: CustomThemeConfig = { '--color-warning-700': '0 0 0', // #000000 '--color-warning-800': '0 0 0', // #000000 '--color-warning-900': '0 0 0', // #000000 - // error | #D41976 - '--color-error-50': '249 221 234', // #f9ddea - '--color-error-100': '246 209 228', // #f6d1e4 - '--color-error-200': '244 198 221', // #f4c6dd - '--color-error-300': '238 163 200', // #eea3c8 - '--color-error-400': '225 94 159', // #e15e9f - '--color-error-500': '212 25 118', // #D41976 - '--color-error-600': '191 23 106', // #bf176a - '--color-error-700': '159 19 89', // #9f1359 - '--color-error-800': '127 15 71', // #7f0f47 - '--color-error-900': '104 12 58', // #680c3a + // error | #b11061 + '--color-error-50': '243 219 231', // #f3dbe7 + '--color-error-100': '239 207 223', // #efcfdf + '--color-error-200': '236 195 216', // #ecc3d8 + '--color-error-300': '224 159 192', // #e09fc0 + '--color-error-400': '200 88 144', // #c85890 + '--color-error-500': '177 16 97', // #b11061 + '--color-error-600': '159 14 87', // #9f0e57 + '--color-error-700': '133 12 73', // #850c49 + '--color-error-800': '106 10 58', // #6a0a3a + '--color-error-900': '87 8 48', // #570830 // surface | #240637 '--color-surface-50': '222 218 225', // #dedae1 '--color-surface-100': '211 205 215', // #d3cdd7 diff --git a/src/themes/serenity.ts b/src/themes/serenity.ts new file mode 100644 index 0000000..a637bfb --- /dev/null +++ b/src/themes/serenity.ts @@ -0,0 +1,101 @@ +import type { CustomThemeConfig } from '@skeletonlabs/tw-plugin'; + +export const ThemeSerenity: CustomThemeConfig = { + name: 'serenity', + properties: { + // =~= Theme Properties =~= + '--theme-font-family-base': `Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`, + '--theme-font-family-heading': `Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`, + '--theme-font-color-base': '0 0 0', + '--theme-font-color-dark': 'var(--color-surface-50)', + '--theme-rounded-base': '9999px', + '--theme-rounded-container': '12px', + '--theme-border-base': '2px', + // =~= Theme On-X Colors =~= + '--on-primary': 'var(--color-surface-900)', + '--on-secondary': 'var(--color-surface-900)', + '--on-tertiary': '0 0 0', + '--on-success': 'var(--color-surface-900)', + '--on-warning': '0 0 0', + '--on-error': 'var(--color-surface-900)', + '--on-surface': 'var(--color-surface-50)', + // =~= Theme Colors =~= + // primary | #fab387 + '--color-primary-50': '254 244 237', // #fef4ed + '--color-primary-100': '254 240 231', // #fef0e7 + '--color-primary-200': '254 236 225', // #feece1 + '--color-primary-300': '253 225 207', // #fde1cf + '--color-primary-400': '252 202 171', // #fccaab + '--color-primary-500': '250 179 135', // #fab387 + '--color-primary-600': '225 161 122', // #e1a17a + '--color-primary-700': '188 134 101', // #bc8665 + '--color-primary-800': '150 107 81', // #966b51 + '--color-primary-900': '123 88 66', // #7b5842 + // secondary | #f5e0dc + '--color-secondary-50': '254 250 250', // #fefafa + '--color-secondary-100': '253 249 248', // #fdf9f8 + '--color-secondary-200': '253 247 246', // #fdf7f6 + '--color-secondary-300': '251 243 241', // #fbf3f1 + '--color-secondary-400': '248 233 231', // #f8e9e7 + '--color-secondary-500': '245 224 220', // #f5e0dc + '--color-secondary-600': '221 202 198', // #ddcac6 + '--color-secondary-700': '184 168 165', // #b8a8a5 + '--color-secondary-800': '147 134 132', // #938684 + '--color-secondary-900': '120 110 108', // #786e6c + // tertiary | #000000 + '--color-tertiary-50': '217 217 217', // #d9d9d9 + '--color-tertiary-100': '204 204 204', // #cccccc + '--color-tertiary-200': '191 191 191', // #bfbfbf + '--color-tertiary-300': '153 153 153', // #999999 + '--color-tertiary-400': '77 77 77', // #4d4d4d + '--color-tertiary-500': '0 0 0', // #000000 + '--color-tertiary-600': '0 0 0', // #000000 + '--color-tertiary-700': '0 0 0', // #000000 + '--color-tertiary-800': '0 0 0', // #000000 + '--color-tertiary-900': '0 0 0', // #000000 + // success | #a6e3a1 + '--color-success-50': '242 251 241', // #f2fbf1 + '--color-success-100': '237 249 236', // #edf9ec + '--color-success-200': '233 248 232', // #e9f8e8 + '--color-success-300': '219 244 217', // #dbf4d9 + '--color-success-400': '193 235 189', // #c1ebbd + '--color-success-500': '166 227 161', // #a6e3a1 + '--color-success-600': '149 204 145', // #95cc91 + '--color-success-700': '125 170 121', // #7daa79 + '--color-success-800': '100 136 97', // #648861 + '--color-success-900': '81 111 79', // #516f4f + // warning | #000000 + '--color-warning-50': '217 217 217', // #d9d9d9 + '--color-warning-100': '204 204 204', // #cccccc + '--color-warning-200': '191 191 191', // #bfbfbf + '--color-warning-300': '153 153 153', // #999999 + '--color-warning-400': '77 77 77', // #4d4d4d + '--color-warning-500': '0 0 0', // #000000 + '--color-warning-600': '0 0 0', // #000000 + '--color-warning-700': '0 0 0', // #000000 + '--color-warning-800': '0 0 0', // #000000 + '--color-warning-900': '0 0 0', // #000000 + // error | #f38ba8 + '--color-error-50': '253 238 242', // #fdeef2 + '--color-error-100': '253 232 238', // #fde8ee + '--color-error-200': '252 226 233', // #fce2e9 + '--color-error-300': '250 209 220', // #fad1dc + '--color-error-400': '247 174 194', // #f7aec2 + '--color-error-500': '243 139 168', // #f38ba8 + '--color-error-600': '219 125 151', // #db7d97 + '--color-error-700': '182 104 126', // #b6687e + '--color-error-800': '146 83 101', // #925365 + '--color-error-900': '119 68 82', // #774452 + // surface | #454d4f + '--color-surface-50': '227 228 229', // #e3e4e5 + '--color-surface-100': '218 219 220', // #dadbdc + '--color-surface-200': '209 211 211', // #d1d3d3 + '--color-surface-300': '181 184 185', // #b5b8b9 + '--color-surface-400': '125 130 132', // #7d8284 + '--color-surface-500': '69 77 79', // #454d4f + '--color-surface-600': '62 69 71', // #3e4547 + '--color-surface-700': '52 58 59', // #343a3b + '--color-surface-800': '41 46 47', // #292e2f + '--color-surface-900': '34 38 39' // #222627 + } +}; diff --git a/static/legacy/.css b/static/legacy/.css new file mode 100644 index 0000000..4f1fb34 --- /dev/null +++ b/static/legacy/.css @@ -0,0 +1,306 @@ +b.svelte-1osdgb2 { + background-color: #00000073; + border-radius: 10px; + padding: 5px +} + +@media only screen and (max-width: 600px) { + b.svelte-1osdgb2 { + padding: 3px + } +} + +body { + margin: 0 +} + +h1.svelte-r035pw, +h2.svelte-r035pw { + margin-top: 0; + margin-bottom: 15px +} + +div.svelte-r035pw, +button.svelte-r035pw { + margin-bottom: 5vh +} + +#logo.svelte-r035pw { + height: 440px +} + +@media only screen and (max-width: 600px) { + #logo.svelte-r035pw { + height: 250px + } +} + +main.svelte-iqe5jf.svelte-iqe5jf { + display: grid; + height: 100vh +} + +#maininfo.svelte-iqe5jf.svelte-iqe5jf { + margin-top: 3vh +} + +#maininfo.svelte-iqe5jf>.svelte-iqe5jf { + margin-bottom: 0; + margin-top: 1.5vh +} + +#generalinfo.svelte-iqe5jf>.svelte-iqe5jf { + margin-block: 15px +} + +h1.svelte-iqe5jf.svelte-iqe5jf, +h2.svelte-iqe5jf.svelte-iqe5jf, +h3.svelte-iqe5jf.svelte-iqe5jf { + margin-inline: 20px +} + +h4.svelte-iqe5jf.svelte-iqe5jf { + align-self: flex-end +} + +.svelte-qs0vfb { + margin-bottom: 0 +} + +a.svelte-qs0vfb { + font-size: 1.5em; + font-weight: 700 +} + +#search.svelte-tubwpm.svelte-tubwpm { + display: flex; + flex-direction: row; + align-items: center; + margin-block: 2vh; + gap: 15px +} + +#search.svelte-tubwpm>img.svelte-tubwpm { + height: 35px; + width: 35px; + filter: invert(1); + transition: opacity .15s +} + +#search.svelte-tubwpm>input.svelte-tubwpm { + width: 90vw +} + +#search.svelte-tubwpm>img.svelte-tubwpm:hover { + opacity: .5; + cursor: pointer +} + +main.svelte-tubwpm.svelte-tubwpm { + display: flex; + flex-direction: column; + align-items: center +} + +#cards.svelte-tubwpm.svelte-tubwpm { + display: flex; + flex-direction: column; + align-items: center; + width: 100vw; + padding-inline: 30px; + box-sizing: border-box +} + +#card.svelte-tubwpm.svelte-tubwpm { + width: 100%; + margin-bottom: 20px; + background-color: var(--active-color); + border: 15px var(--fg-color) solid; + border-radius: 30px; + text-decoration: none; + color: var(--font-color); + transition: transform .5s +} + +#card.svelte-tubwpm.svelte-tubwpm:hover { + transform: scale(102%) +} + +#cards.svelte-tubwpm:hover #card.svelte-tubwpm:not(:hover) { + transform: scale(98%) +} + +#card.svelte-tubwpm>h1.svelte-tubwpm, +h2.svelte-tubwpm.svelte-tubwpm { + margin-block: 15px +} + +@media (prefers-reduced-motion) { + #card.svelte-tubwpm.svelte-tubwpm:hover { + transform: scale(1) + } + + #cards.svelte-tubwpm:hover #card.svelte-tubwpm:not(:hover) { + transform: scale(1) + } +} + +@media only screen and (max-width: 600px) { + #search.svelte-tubwpm>input.svelte-tubwpm { + width: 80vw + } +} + +:root { + --bg-color: #440b67; + --fg-color: #c37ee5; + --active-color: #6b10a3; + --font-color: #ffffff +} + +@font-face { + font-family: kubefont; + src: url(https://kubejs.com/Montserrat-Medium.ttf) +} + +body { + background-color: var(--bg-color); + color: var(--font-color); + font-family: kubefont, Courier New, Courier, monospace; + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + -ms-overflow-style: none; + scrollbar-width: none +} + +body::-webkit-scrollbar { + display: none +} + +br, +img { + user-select: none +} + +h1 { + font-size: 3em +} + +h2 { + font-size: 1.5em +} + +h3 { + font-size: 1.35em +} + +h4 { + font-size: 1.1em +} + +p { + font-size: 1.25em +} + +a:not(#card) { + text-decoration: none; + color: var(--fg-color); + transition: opacity .1s +} + +a:not(#card):hover { + opacity: .5 +} + +button { + font-size: 2em; + padding: 10px; + cursor: pointer; + border-color: var(--fg-color); + border-width: 5px; + border-style: solid; + border-radius: 15px; + background-color: var(--bg-color); + transition: background-color .1s; + color: var(--font-color); + font-family: kubefont, Courier New, Courier, monospace; + font-weight: 700 +} + +button:hover { + background-color: var(--active-color) +} + +button:active { + background-color: var(--fg-color) +} + +input { + background-color: var(--active-color); + box-sizing: border-box; + padding: 10px; + height: 5vh; + border-radius: 15px; + border-color: var(--fg-color); + border-width: 5px; + border-style: solid; + color: var(--font-color) +} + +input, +input::placeholder { + font-family: kubefont, Courier New, Courier, monospace; + font-weight: 700; + font-size: 1.25em +} + +input::placeholder { + color: var(--fg-color) +} + +input:focus { + outline: none +} + +#icons { + display: flex; + justify-content: center; + column-gap: 25px +} + +#icons>a>img { + height: 30px; + filter: invert(1); + transition: filter .2s +} + +#icons>a>img:hover { + filter: invert(.7) +} + +@media only screen and (max-width: 600px) { + + h1, + button { + font-size: 1.7em + } + + h2, + input { + font-size: .7em + } + + h3 { + font-size: .6em + } + + h4 { + font-size: .5em + } + + p { + font-size: .65em + } +} \ No newline at end of file diff --git a/static/legacy/.js b/static/legacy/.js new file mode 100644 index 0000000..480da5f --- /dev/null +++ b/static/legacy/.js @@ -0,0 +1,33 @@ +(function () { const r = document.createElement("link").relList; if (r && r.supports && r.supports("modulepreload")) return; for (const u of document.querySelectorAll('link[rel="modulepreload"]')) i(u); new MutationObserver(u => { for (const c of u) if (c.type === "childList") for (const l of c.addedNodes) l.tagName === "LINK" && l.rel === "modulepreload" && i(l) }).observe(document, { childList: !0, subtree: !0 }); function o(u) { const c = {}; return u.integrity && (c.integrity = u.integrity), u.referrerPolicy && (c.referrerPolicy = u.referrerPolicy), u.crossOrigin === "use-credentials" ? c.credentials = "include" : u.crossOrigin === "anonymous" ? c.credentials = "omit" : c.credentials = "same-origin", c } function i(u) { if (u.ep) return; u.ep = !0; const c = o(u); fetch(u.href, c) } })(); function nr() { } function Zo(n, r) { for (const o in r) n[o] = r[o]; return n } function Ze(n) { return n() } function ze() { return Object.create(null) } function Cr(n) { n.forEach(Ze) } function Re(n) { return typeof n == "function" } function Or(n, r) { return n != n ? r == r : n !== r || n && typeof n == "object" || typeof n == "function" } let cn; function Gn(n, r) { return cn || (cn = document.createElement("a")), cn.href = r, n === cn.href } function Ro(n) { return Object.keys(n).length === 0 } function Ho(n, r, o, i) { if (n) { const u = He(n, r, o, i); return n[0](u) } } function He(n, r, o, i) { return n[1] && i ? Zo(o.ctx.slice(), n[1](i(r))) : o.ctx } function Vo(n, r, o, i) { if (n[2] && i) { const u = n[2](i(o)); if (r.dirty === void 0) return u; if (typeof u == "object") { const c = [], l = Math.max(r.dirty.length, u.length); for (let s = 0; s < l; s += 1)c[s] = r.dirty[s] | u[s]; return c } return r.dirty | u } return r.dirty } function Jo(n, r, o, i, u, c) { if (u) { const l = He(r, o, i, c); n.p(l, u) } } function Ko(n) { if (n.ctx.length > 32) { const r = [], o = n.ctx.length / 32; for (let i = 0; i < o; i++)r[i] = -1; return r } return -1 } function C(n, r) { n.appendChild(r) } function pt(n, r, o) { n.insertBefore(r, o || null) } function st(n) { n.parentNode && n.parentNode.removeChild(n) } function Xo(n, r) { for (let o = 0; o < n.length; o += 1)n[o] && n[o].d(r) } function K(n) { return document.createElement(n) } function ft(n) { return document.createTextNode(n) } function at() { return ft(" ") } function Ve() { return ft("") } function pn(n, r, o, i) { return n.addEventListener(r, o, i), () => n.removeEventListener(r, o, i) } function Y(n, r, o) { o == null ? n.removeAttribute(r) : n.getAttribute(r) !== o && n.setAttribute(r, o) } function ti(n) { return Array.from(n.childNodes) } function Ht(n, r) { r = "" + r, n.data !== r && (n.data = r) } function xe(n, r) { n.value = r ?? "" } let Wn; function Hr(n) { Wn = n } const xr = [], Vr = []; let Er = []; const On = [], ri = Promise.resolve(); let $n = !1; function ni() { $n || ($n = !0, ri.then(Ke)) } function Un(n) { Er.push(n) } function Je(n) { On.push(n) } const Tn = new Set; let zr = 0; function Ke() { if (zr !== 0) return; const n = Wn; do { try { for (; zr < xr.length;) { const r = xr[zr]; zr++, Hr(r), ei(r.$$) } } catch (r) { throw xr.length = 0, zr = 0, r } for (Hr(null), xr.length = 0, zr = 0; Vr.length;)Vr.pop()(); for (let r = 0; r < Er.length; r += 1) { const o = Er[r]; Tn.has(o) || (Tn.add(o), o()) } Er.length = 0 } while (xr.length); for (; On.length;)On.pop()(); $n = !1, Tn.clear(), Hr(n) } function ei(n) { if (n.fragment !== null) { n.update(), Cr(n.before_update); const r = n.dirty; n.dirty = [-1], n.fragment && n.fragment.p(n.ctx, r), n.after_update.forEach(Un) } } function oi(n) { const r = [], o = []; Er.forEach(i => n.indexOf(i) === -1 ? r.push(i) : o.push(i)), o.forEach(i => i()), Er = r } const gn = new Set; let kr; function Xe() { kr = { r: 0, c: [], p: kr } } function to() { kr.r || Cr(kr.c), kr = kr.p } function At(n, r) { n && n.i && (gn.delete(n), n.i(r)) } function Dt(n, r, o, i) { if (n && n.o) { if (gn.has(n)) return; gn.add(n), kr.c.push(() => { gn.delete(n), i && (o && n.d(1), i()) }), n.o(r) } else i && i() } function ro(n, r, o) { const i = n.$$.props[r]; i !== void 0 && (n.$$.bound[i] = o, o(n.$$.ctx[i])) } function ar(n) { n && n.c() } function tr(n, r, o, i) { const { fragment: u, after_update: c } = n.$$; u && u.m(r, o), i || Un(() => { const l = n.$$.on_mount.map(Ze).filter(Re); n.$$.on_destroy ? n.$$.on_destroy.push(...l) : Cr(l), n.$$.on_mount = [] }), c.forEach(Un) } function rr(n, r) { const o = n.$$; o.fragment !== null && (oi(o.after_update), Cr(o.on_destroy), o.fragment && o.fragment.d(r), o.on_destroy = o.fragment = null, o.ctx = []) } function ii(n, r) { n.$$.dirty[0] === -1 && (xr.push(n), ni(), n.$$.dirty.fill(0)), n.$$.dirty[r / 31 | 0] |= 1 << r % 31 } function $r(n, r, o, i, u, c, l, s = [-1]) { const f = Wn; Hr(n); const p = n.$$ = { fragment: null, ctx: [], props: c, update: nr, not_equal: u, bound: ze(), on_mount: [], on_destroy: [], on_disconnect: [], before_update: [], after_update: [], context: new Map(r.context || (f ? f.$$.context : [])), callbacks: ze(), dirty: s, skip_bound: !1, root: r.target || f.$$.root }; l && l(p.root); let y = !1; if (p.ctx = o ? o(n, r.props || {}, (_, M, ...k) => { const S = k.length ? k[0] : M; return p.ctx && u(p.ctx[_], p.ctx[_] = S) && (!p.skip_bound && p.bound[_] && p.bound[_](S), y && ii(n, _)), M }) : [], p.update(), y = !0, Cr(p.before_update), p.fragment = i ? i(p.ctx) : !1, r.target) { if (r.hydrate) { const _ = ti(r.target); p.fragment && p.fragment.l(_), _.forEach(st) } else p.fragment && p.fragment.c(); r.intro && At(n.$$.fragment), tr(n, r.target, r.anchor, r.customElement), Ke() } Hr(f) } class Ur { $destroy() { rr(this, 1), this.$destroy = nr } $on(r, o) { if (!Re(o)) return nr; const i = this.$$.callbacks[r] || (this.$$.callbacks[r] = []); return i.push(o), () => { const u = i.indexOf(o); u !== -1 && i.splice(u, 1) } } $set(r) { this.$$set && !Ro(r) && (this.$$.skip_bound = !0, this.$$set(r), this.$$.skip_bound = !1) } } function ai(n) { let r, o, i, u; const c = n[2].default, l = Ho(c, n, n[1], null); return { c() { r = K("b"), l && l.c(), Y(r, "title", "Click to copy"), Y(r, "class", "svelte-1osdgb2") }, m(s, f) { pt(s, r, f), l && l.m(r, null), n[3](r), o = !0, i || (u = pn(r, "mousedown", n[4]), i = !0) }, p(s, [f]) { l && l.p && (!o || f & 2) && Jo(l, c, s, s[1], o ? Vo(c, s[1], f, null) : Ko(s[1]), null) }, i(s) { o || (At(l, s), o = !0) }, o(s) { Dt(l, s), o = !1 }, d(s) { s && st(r), l && l.d(s), n[3](null), i = !1, u() } } } function li(n, r, o) { let { $$slots: i = {}, $$scope: u } = r, c; function l(f) { Vr[f ? "unshift" : "push"](() => { c = f, o(0, c) }) } const s = () => { navigator.clipboard.writeText(c == null ? void 0 : c.innerText) }; return n.$$set = f => { "$$scope" in f && o(1, u = f.$$scope) }, [c, u, i, l, s] } class Dr extends Ur { constructor(r) { super(), $r(this, r, li, ai, Or, {}) } } function ui(n) { let r = window.location.origin + "", o, i; return { c() { o = ft(r), i = ft("/#[package-name]") }, m(u, c) { pt(u, o, c), pt(u, i, c) }, p: nr, d(u) { u && st(o), u && st(i) } } } function ci(n) { + let r, o, i, u, c, l, s, f, p, y, _, M, k, S, d, h, b, I, F, B, U, X, lt, dt, gt, wt; return I = new Dr({ props: { $$slots: { default: [ui] }, $$scope: { ctx: n } } }), { + c() { + r = K("main"), o = K("img"), u = at(), c = K("div"), c.innerHTML = `

KJSPKG LOOKUP

+

Show other people the packages you love!

`, l = at(), s = K("div"), f = K("p"), p = ft(`This website serves as a means to share KJSPKG packages more easily. + `), y = K("br"), _ = at(), M = K("br"), k = ft(` + Don't know what KJSPKG is? Click the GitHub logo at the bottom of the page + `), S = K("br"), d = at(), h = K("br"), b = ft(` + To link a package, simply do: `), ar(I.$$.fragment), F = ft("!"), B = at(), U = K("button"), U.textContent = "See all packages", X = at(), lt = K("div"), lt.innerHTML = `github + site`, Y(o, "id", "logo"), Gn(o.src, i = "https://raw.githubusercontent.com/Modern-Modpacks/assets/main/Icons/Other/kjspkg.png") || Y(o, "src", i), Y(o, "alt", "logo"), Y(o, "class", "svelte-r035pw"), Y(c, "class", "svelte-r035pw"), Y(s, "class", "svelte-r035pw"), Y(U, "class", "svelte-r035pw"), Y(lt, "id", "icons"), Y(lt, "class", "svelte-r035pw") + }, m(jt, Et) { pt(jt, r, Et), C(r, o), C(r, u), C(r, c), C(r, l), C(r, s), C(s, f), C(f, p), C(f, y), C(f, _), C(f, M), C(f, k), C(f, S), C(f, d), C(f, h), C(f, b), tr(I, f, null), C(f, F), C(r, B), C(r, U), C(r, X), C(r, lt), dt = !0, gt || (wt = pn(U, "click", n[1]), gt = !0) }, p(jt, [Et]) { const Bt = {}; Et & 4 && (Bt.$$scope = { dirty: Et, ctx: jt }), I.$set(Bt) }, i(jt) { dt || (At(I.$$.fragment, jt), dt = !0) }, o(jt) { Dt(I.$$.fragment, jt), dt = !1 }, d(jt) { jt && st(r), rr(I), gt = !1, wt() } + } +} function fi(n, r, o) { let { search: i = !1 } = r; const u = () => { o(0, i = !0) }; return n.$$set = c => { "search" in c && o(0, i = c.search) }, [i, u] } class si extends Ur { constructor(r) { super(), $r(this, r, fi, ci, Or, { search: 0 }) } } function Ae(n) { let r; return { c() { r = K("br"), Y(r, "class", "svelte-iqe5jf") }, m(o, i) { pt(o, r, i) }, d(o) { o && st(r) } } } function Te(n) { let r, o, i, u = n[7](n[0].dependencies) + "", c; return { c() { r = K("h3"), r.textContent = "Dependencies:", o = at(), i = K("p"), c = ft(u), Y(r, "class", "svelte-iqe5jf"), Y(i, "class", "svelte-iqe5jf") }, m(l, s) { pt(l, r, s), pt(l, o, s), pt(l, i, s), C(i, c) }, p(l, s) { s & 1 && u !== (u = l[7](l[0].dependencies) + "") && Ht(c, u) }, d(l) { l && st(r), l && st(o), l && st(i) } } } function De(n) { let r, o, i, u = n[7](n[0].incompatibilities) + "", c; return { c() { r = K("h3"), r.textContent = "Incompatibilities:", o = at(), i = K("p"), c = ft(u), Y(r, "class", "svelte-iqe5jf"), Y(i, "class", "svelte-iqe5jf") }, m(l, s) { pt(l, r, s), pt(l, o, s), pt(l, i, s), C(i, c) }, p(l, s) { s & 1 && u !== (u = l[7](l[0].incompatibilities) + "") && Ht(c, u) }, d(l) { l && st(r), l && st(o), l && st(i) } } } function gi(n) { let r, o; return { c() { r = ft("kjspkg install "), o = ft(n[3]) }, m(i, u) { pt(i, r, u), pt(i, o, u) }, p(i, u) { u & 8 && Ht(o, i[3]) }, d(i) { i && st(r), i && st(o) } } } function pi(n) { let r, o; return { c() { r = ft("kjspkg remove "), o = ft(n[3]) }, m(i, u) { pt(i, r, u), pt(i, o, u) }, p(i, u) { u & 8 && Ht(o, i[3]) }, d(i) { i && st(r), i && st(o) } } } function di(n) { let r, o; return { c() { r = ft("kjspkg update "), o = ft(n[3]) }, m(i, u) { pt(i, r, u), pt(i, o, u) }, p(i, u) { u & 8 && Ht(o, i[3]) }, d(i) { i && st(r), i && st(o) } } } function hi(n) { let r, o; return { c() { r = ft("kjspkg pkg "), o = ft(n[3]) }, m(i, u) { pt(i, r, u), pt(i, o, u) }, p(i, u) { u & 8 && Ht(o, i[3]) }, d(i) { i && st(r), i && st(o) } } } function yi(n) { let r, o, i, u, c, l = (n[3] ? n[2](n[3].replaceAll("-", " ")) : null) + "", s, f, p, y = n[6](n[0].description) + "", _, M, k, S = n[0].author + "", d, h, b, I, F, B, U, X, lt, dt, gt, wt, jt, Et, Bt, sr, er, Ct, Vt, qt, Gt, gr, or, zt, lr, pr, Wt, Ft, ur, Zt, Ot, $t, cr, A, j, z, x, v, J, T, rt, ut, H; document.title = r = n[3] ? n[2](n[3].replaceAll("-", " ")) : null; let P = (n[0].dependencies.length || n[0].incompatibilities.length) && Ae(), $ = n[0].dependencies.length && Te(n), G = n[0].incompatibilities.length && De(n); return qt = new Dr({ props: { $$slots: { default: [gi] }, $$scope: { ctx: n } } }), zt = new Dr({ props: { $$slots: { default: [pi] }, $$scope: { ctx: n } } }), Ft = new Dr({ props: { $$slots: { default: [di] }, $$scope: { ctx: n } } }), $t = new Dr({ props: { $$slots: { default: [hi] }, $$scope: { ctx: n } } }), { c() { o = at(), i = K("main"), u = K("div"), c = K("h1"), s = ft(l), f = at(), p = K("h2"), _ = at(), M = K("h3"), k = ft("By "), d = ft(S), h = at(), b = K("div"), I = K("h3"), I.textContent = "Available for:", F = at(), B = K("p"), U = ft(n[4]), X = at(), lt = K("p"), dt = ft(n[5]), gt = at(), P && P.c(), wt = at(), $ && $.c(), jt = at(), G && G.c(), Et = at(), Bt = K("br"), sr = at(), er = K("h3"), er.textContent = "Commands:", Ct = at(), Vt = K("p"), ar(qt.$$.fragment), Gt = ft(" to install"), gr = at(), or = K("p"), ar(zt.$$.fragment), lr = ft(" to remove"), pr = at(), Wt = K("p"), ar(Ft.$$.fragment), ur = ft(" to update"), Zt = at(), Ot = K("p"), ar($t.$$.fragment), cr = ft(" to see more info"), A = at(), j = K("br"), z = at(), x = K("div"), v = K("a"), J = K("img"), rt = at(), ut = K("h4"), ut.innerHTML = 'Confused about what this is? Checkout the main page', Y(c, "class", "svelte-iqe5jf"), Y(p, "class", "svelte-iqe5jf"), Y(M, "class", "svelte-iqe5jf"), Y(u, "id", "maininfo"), Y(u, "class", "svelte-iqe5jf"), Y(I, "class", "svelte-iqe5jf"), Y(B, "class", "svelte-iqe5jf"), Y(lt, "class", "svelte-iqe5jf"), Y(Bt, "class", "svelte-iqe5jf"), Y(er, "class", "svelte-iqe5jf"), Y(Vt, "class", "svelte-iqe5jf"), Y(or, "class", "svelte-iqe5jf"), Y(Wt, "class", "svelte-iqe5jf"), Y(Ot, "class", "svelte-iqe5jf"), Y(j, "class", "svelte-iqe5jf"), Y(J, "id", "logo"), Y(J, "title", "Source code"), Gn(J.src, T = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgMGMtNi42MjYgMC0xMiA1LjM3My0xMiAxMiAwIDUuMzAyIDMuNDM4IDkuOCA4LjIwNyAxMS4zODcuNTk5LjExMS43OTMtLjI2MS43OTMtLjU3N3YtMi4yMzRjLTMuMzM4LjcyNi00LjAzMy0xLjQxNi00LjAzMy0xLjQxNi0uNTQ2LTEuMzg3LTEuMzMzLTEuNzU2LTEuMzMzLTEuNzU2LTEuMDg5LS43NDUuMDgzLS43MjkuMDgzLS43MjkgMS4yMDUuMDg0IDEuODM5IDEuMjM3IDEuODM5IDEuMjM3IDEuMDcgMS44MzQgMi44MDcgMS4zMDQgMy40OTIuOTk3LjEwNy0uNzc1LjQxOC0xLjMwNS43NjItMS42MDQtMi42NjUtLjMwNS01LjQ2Ny0xLjMzNC01LjQ2Ny01LjkzMSAwLTEuMzExLjQ2OS0yLjM4MSAxLjIzNi0zLjIyMS0uMTI0LS4zMDMtLjUzNS0xLjUyNC4xMTctMy4xNzYgMCAwIDEuMDA4LS4zMjIgMy4zMDEgMS4yMy45NTctLjI2NiAxLjk4My0uMzk5IDMuMDAzLS40MDQgMS4wMi4wMDUgMi4wNDcuMTM4IDMuMDA2LjQwNCAyLjI5MS0xLjU1MiAzLjI5Ny0xLjIzIDMuMjk3LTEuMjMuNjUzIDEuNjUzLjI0MiAyLjg3NC4xMTggMy4xNzYuNzcuODQgMS4yMzUgMS45MTEgMS4yMzUgMy4yMjEgMCA0LjYwOS0yLjgwNyA1LjYyNC01LjQ3OSA1LjkyMS40My4zNzIuODIzIDEuMTAyLjgyMyAyLjIyMnYzLjI5M2MwIC4zMTkuMTkyLjY5NC44MDEuNTc2IDQuNzY1LTEuNTg5IDguMTk5LTYuMDg2IDguMTk5LTExLjM4NiAwLTYuNjI3LTUuMzczLTEyLTEyLTEyeiIvPjwvc3ZnPg==") || Y(J, "src", T), Y(J, "alt", "github"), Y(v, "href", n[1]), Y(x, "id", "icons"), Y(x, "class", "svelte-iqe5jf"), Y(b, "id", "generalinfo"), Y(b, "class", "svelte-iqe5jf"), Y(ut, "class", "svelte-iqe5jf"), Y(i, "class", "svelte-iqe5jf") }, m(q, W) { pt(q, o, W), pt(q, i, W), C(i, u), C(u, c), C(c, s), C(u, f), C(u, p), p.innerHTML = y, C(u, _), C(u, M), C(M, k), C(M, d), C(i, h), C(i, b), C(b, I), C(b, F), C(b, B), C(B, U), C(b, X), C(b, lt), C(lt, dt), C(b, gt), P && P.m(b, null), C(b, wt), $ && $.m(b, null), C(b, jt), G && G.m(b, null), C(b, Et), C(b, Bt), C(b, sr), C(b, er), C(b, Ct), C(b, Vt), tr(qt, Vt, null), C(Vt, Gt), C(b, gr), C(b, or), tr(zt, or, null), C(or, lr), C(b, pr), C(b, Wt), tr(Ft, Wt, null), C(Wt, ur), C(b, Zt), C(b, Ot), tr($t, Ot, null), C(Ot, cr), C(b, A), C(b, j), C(b, z), C(b, x), C(x, v), C(v, J), C(i, rt), C(i, ut), H = !0 }, p(q, [W]) { (!H || W & 12) && r !== (r = q[3] ? q[2](q[3].replaceAll("-", " ")) : null) && (document.title = r), (!H || W & 12) && l !== (l = (q[3] ? q[2](q[3].replaceAll("-", " ")) : null) + "") && Ht(s, l), (!H || W & 1) && y !== (y = q[6](q[0].description) + "") && (p.innerHTML = y), (!H || W & 1) && S !== (S = q[0].author + "") && Ht(d, S), (!H || W & 16) && Ht(U, q[4]), (!H || W & 32) && Ht(dt, q[5]), q[0].dependencies.length || q[0].incompatibilities.length ? P || (P = Ae(), P.c(), P.m(b, wt)) : P && (P.d(1), P = null), q[0].dependencies.length ? $ ? $.p(q, W) : ($ = Te(q), $.c(), $.m(b, jt)) : $ && ($.d(1), $ = null), q[0].incompatibilities.length ? G ? G.p(q, W) : (G = De(q), G.c(), G.m(b, Et)) : G && (G.d(1), G = null); const ht = {}; W & 1032 && (ht.$$scope = { dirty: W, ctx: q }), qt.$set(ht); const bt = {}; W & 1032 && (bt.$$scope = { dirty: W, ctx: q }), zt.$set(bt); const ct = {}; W & 1032 && (ct.$$scope = { dirty: W, ctx: q }), Ft.$set(ct); const tt = {}; W & 1032 && (tt.$$scope = { dirty: W, ctx: q }), $t.$set(tt), (!H || W & 2) && Y(v, "href", q[1]) }, i(q) { H || (At(qt.$$.fragment, q), At(zt.$$.fragment, q), At(Ft.$$.fragment, q), At($t.$$.fragment, q), H = !0) }, o(q) { Dt(qt.$$.fragment, q), Dt(zt.$$.fragment, q), Dt(Ft.$$.fragment, q), Dt($t.$$.fragment, q), H = !1 }, d(q) { q && st(o), q && st(i), P && P.d(), $ && $.d(), G && G.d(), rr(qt), rr(zt), rr(Ft), rr($t) } } } function _i(n, r, o) { let { pkginfo: i } = r, { sourcelink: u } = r, c, l, s; setInterval(() => { o(3, c = window.location.hash.substring(1)), o(4, l = y()), o(5, s = _()) }, 1); let { prettify: f } = r, p = k => { let S = []; return k.split(" ").forEach(d => { d.startsWith("http://") || d.startsWith("https://") ? S.push(`${d}`) : S.push(d) }), S.join(" ") }, y = () => { let k = []; return i.versions.forEach(S => { k.push("1." + (10 + S)) }), k.join(", ") }, _ = () => { let k = []; return i.modloaders.forEach(S => { k.push(f(S)) }), k.join(", ") }, M = k => { let S = []; return k.forEach(d => { d.includes(":") ? S.push(f(`${d.split(":").at(-1).replaceAll("-", " ").replaceAll("_", " ")} (${d.split(":")[0]})`)) : S.push(f(d.replaceAll("-", " ").replaceAll("_", " "))) }), S.join(", ") }; return n.$$set = k => { "pkginfo" in k && o(0, i = k.pkginfo), "sourcelink" in k && o(1, u = k.sourcelink), "prettify" in k && o(2, f = k.prettify) }, [i, u, f, c, l, s, p, M] } class mi extends Ur { constructor(r) { super(), $r(this, r, _i, yi, Or, { pkginfo: 0, sourcelink: 1, prettify: 2 }) } } function vi(n) { let r = window.location.hash.substring(1) + "", o; return { c() { o = ft(r) }, m(i, u) { pt(i, o, u) }, p: nr, d(i) { i && st(o) } } } function bi(n) { let r, o, i, u, c, l, s, f, p, y, _, M, k, S, d; return s = new Dr({ props: { $$slots: { default: [vi] }, $$scope: { ctx: n } } }), { c() { r = at(), o = K("main"), i = K("h1"), i.textContent = "Whoops, something has gone wrong!", u = at(), c = K("h2"), l = ft("The package "), ar(s.$$.fragment), f = ft(" was not found"), p = at(), y = K("br"), _ = at(), M = K("br"), k = at(), S = K("a"), S.textContent = "Go back", document.title = "Package not found", Y(i, "class", "svelte-qs0vfb"), Y(c, "class", "svelte-qs0vfb"), Y(y, "class", "svelte-qs0vfb"), Y(M, "class", "svelte-qs0vfb"), Y(S, "href", "/"), Y(S, "class", "svelte-qs0vfb"), Y(o, "class", "svelte-qs0vfb") }, m(h, b) { pt(h, r, b), pt(h, o, b), C(o, i), C(o, u), C(o, c), C(c, l), tr(s, c, null), C(c, f), C(o, p), C(o, y), C(o, _), C(o, M), C(o, k), C(o, S), d = !0 }, p(h, [b]) { const I = {}; b & 1 && (I.$$scope = { dirty: b, ctx: h }), s.$set(I) }, i(h) { d || (At(s.$$.fragment, h), d = !0) }, o(h) { Dt(s.$$.fragment, h), d = !1 }, d(h) { h && st(r), h && st(o), rr(s) } } } class Mi extends Ur { constructor(r) { super(), $r(this, r, null, bi, Or, {}) } } var Ee, wr = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, no = { exports: {} }, ji = Math.floor, fn = Math.max, Ar = Math.min, Dn = function (n, r) { return r ? 2 * n / r : 1 }, wi = function (n, r) { var o, i, u, c, l, s; for (l = [n.length, r.length], o = c = 0, s = Ar(i = l[0], u = l[1]); 0 <= s ? c < s : c > s; o = 0 <= s ? ++c : --c) { if (n[o] < r[o]) return -1; if (n[o] > r[o]) return 1 } return i - u }, Gr = function (n, r) { return Object.prototype.hasOwnProperty.call(n, r) }, ki = function () { function n(r, o, i, u) { this.isjunk = r, o == null && (o = ""), i == null && (i = ""), this.autojunk = u == null || u, this.a = this.b = null, this.setSeqs(o, i) } return n.prototype.setSeqs = function (r, o) { return this.setSeq1(r), this.setSeq2(o) }, n.prototype.setSeq1 = function (r) { if (r !== this.a) return this.a = r, this.matchingBlocks = this.opcodes = null }, n.prototype.setSeq2 = function (r) { if (r !== this.b) return this.b = r, this.matchingBlocks = this.opcodes = null, this.fullbcount = null, this._chainB() }, n.prototype._chainB = function () { var r, o, i, u, c, l, s, f, p, y, _, M, k, S; for (r = this.b, this.b2j = o = {}, u = y = 0, M = r.length; y < M; u = ++y)i = r[u], (Gr(o, i) ? o[i] : o[i] = []).push(u); if (l = {}, c = this.isjunk) for (_ = 0, k = (S = Object.keys(o)).length; _ < k; _++)c(i = S[_]) && (l[i] = !0, delete o[i]); if (p = {}, s = r.length, this.autojunk && s >= 200) for (i in f = ji(s / 100) + 1, o) o[i].length > f && (p[i] = !0, delete o[i]); return this.isbjunk = function (d) { return Gr(l, d) }, this.isbpopular = function (d) { return Gr(p, d) } }, n.prototype.findLongestMatch = function (r, o, i, u) { var c, l, s, f, p, y, _, M, k, S, d, h, b, I, F, B, U, X, lt, dt, gt; for (c = (B = [this.a, this.b, this.b2j, this.isbjunk])[0], l = B[1], s = B[2], M = B[3], f = (U = [r, i, 0])[0], p = U[1], y = U[2], S = {}, _ = b = r; r <= o ? b < o : b > o; _ = r <= o ? ++b : --b) { for (h = {}, I = 0, F = (X = Gr(s, c[_]) ? s[c[_]] : []).length; I < F; I++)if (!((k = X[I]) < i)) { if (k >= u) break; (d = h[k] = (S[k - 1] || 0) + 1) > y && (f = (lt = [_ - d + 1, k - d + 1, d])[0], p = lt[1], y = lt[2]) } S = h } for (; f > r && p > i && !M(l[p - 1]) && c[f - 1] === l[p - 1];)f = (dt = [f - 1, p - 1, y + 1])[0], p = dt[1], y = dt[2]; for (; f + y < o && p + y < u && !M(l[p + y]) && c[f + y] === l[p + y];)y++; for (; f > r && p > i && M(l[p - 1]) && c[f - 1] === l[p - 1];)f = (gt = [f - 1, p - 1, y + 1])[0], p = gt[1], y = gt[2]; for (; f + y < o && p + y < u && M(l[p + y]) && c[f + y] === l[p + y];)y++; return [f, p, y] }, n.prototype.getMatchingBlocks = function () { var r, o, i, u, c, l, s, f, p, y, _, M, k, S, d, h, b, I, F, B, U, X, lt, dt, gt, wt; if (this.matchingBlocks) return this.matchingBlocks; for (I = [[0, S = (X = [this.a.length, this.b.length])[0], 0, d = X[1]]], h = []; I.length;)o = (lt = I.pop())[0], r = lt[1], u = lt[2], i = lt[3], c = (dt = F = this.findLongestMatch(o, r, u, i))[0], f = dt[1], (_ = dt[2]) && (h.push(F), o < c && u < f && I.push([o, c, u, f]), c + _ < r && f + _ < i && I.push([c + _, r, f + _, i])); for (h.sort(wi), l = p = M = 0, b = [], B = 0, U = h.length; B < U; B++)s = (gt = h[B])[0], y = gt[1], k = gt[2], l + M === s && p + M === y ? M += k : (M && b.push([l, p, M]), l = (wt = [s, y, k])[0], p = wt[1], M = wt[2]); return M && b.push([l, p, M]), b.push([S, d, 0]), this.matchingBlocks = b }, n.prototype.getOpcodes = function () { var r, o, i, u, c, l, s, f, p, y, _, M; if (this.opcodes) return this.opcodes; for (u = c = 0, this.opcodes = o = [], f = 0, p = (y = this.getMatchingBlocks()).length; f < p; f++)r = (_ = y[f])[0], i = _[1], l = _[2], s = "", u < r && c < i ? s = "replace" : u < r ? s = "delete" : c < i && (s = "insert"), s && o.push([s, u, r, c, i]), u = (M = [r + l, i + l])[0], c = M[1], l && o.push(["equal", r, u, i, c]); return o }, n.prototype.getGroupedOpcodes = function (r) { var o, i, u, c, l, s, f, p, y, _, M, k, S, d, h; for (r == null && (r = 3), (o = this.getOpcodes()).length || (o = [["equal", 0, 1, 0, 1]]), o[0][0] === "equal" && (y = (k = o[0])[0], c = k[1], l = k[2], s = k[3], f = k[4], o[0] = [y, fn(c, l - r), l, fn(s, f - r), f]), o[o.length - 1][0] === "equal" && (y = (S = o[o.length - 1])[0], c = S[1], l = S[2], s = S[3], f = S[4], o[o.length - 1] = [y, c, Ar(l, c + r), s, Ar(f, s + r)]), p = r + r, u = [], i = [], _ = 0, M = o.length; _ < M; _++)y = (d = o[_])[0], c = d[1], l = d[2], s = d[3], f = d[4], y === "equal" && l - c > p && (i.push([y, c, Ar(l, c + r), s, Ar(f, s + r)]), u.push(i), i = [], c = (h = [fn(c, l - r), fn(s, f - r)])[0], s = h[1]), i.push([y, c, l, s, f]); return !i.length || i.length === 1 && i[0][0] === "equal" || u.push(i), u }, n.prototype.ratio = function () { var r, o, i, u; for (r = 0, o = 0, i = (u = this.getMatchingBlocks()).length; o < i; o++)r += u[o][2]; return Dn(r, this.a.length + this.b.length) }, n.prototype.quickRatio = function () { var r, o, i, u, c, l, s, f, p, y, _; if (!this.fullbcount) for (this.fullbcount = i = {}, l = 0, f = (y = this.b).length; l < f; l++)i[o = y[l]] = (i[o] || 0) + 1; for (i = this.fullbcount, r = {}, u = 0, s = 0, p = (_ = this.a).length; s < p; s++)o = _[s], c = Gr(r, o) ? r[o] : i[o] || 0, r[o] = c - 1, c > 0 && u++; return Dn(u, this.a.length + this.b.length) }, n.prototype.realQuickRatio = function () { var r, o, i; return i = [this.a.length, this.b.length], Dn(Ar(r = i[0], o = i[1]), r + o) }, n }(), eo = { exports: {} }; Ee = eo, function () { var n, r, o, i, u, c, l, s, f, p, y, _, M, k, S; o = Math.floor, p = Math.min, r = function (d, h) { return d < h ? -1 : d > h ? 1 : 0 }, f = function (d, h, b, I, F) { var B; if (b == null && (b = 0), F == null && (F = r), b < 0) throw new Error("lo must be non-negative"); for (I == null && (I = d.length); b < I;)F(h, d[B = o((b + I) / 2)]) < 0 ? I = B : b = B + 1; return [].splice.apply(d, [b, b - b].concat(h)), h }, c = function (d, h, b) { return b == null && (b = r), d.push(h), k(d, 0, d.length - 1, b) }, u = function (d, h) { var b, I; return h == null && (h = r), b = d.pop(), d.length ? (I = d[0], d[0] = b, S(d, 0, h)) : I = b, I }, s = function (d, h, b) { var I; return b == null && (b = r), I = d[0], d[0] = h, S(d, 0, b), I }, l = function (d, h, b) { var I; return b == null && (b = r), d.length && b(d[0], h) < 0 && (h = (I = [d[0], h])[0], d[0] = I[1], S(d, 0, b)), h }, i = function (d, h) { var b, I, F, B, U, X; for (h == null && (h = r), U = [], I = 0, F = (B = function () { X = []; for (var lt = 0, dt = o(d.length / 2); 0 <= dt ? lt < dt : lt > dt; 0 <= dt ? lt++ : lt--)X.push(lt); return X }.apply(this).reverse()).length; I < F; I++)b = B[I], U.push(S(d, b, h)); return U }, M = function (d, h, b) { var I; if (b == null && (b = r), (I = d.indexOf(h)) !== -1) return k(d, 0, I, b), S(d, I, b) }, y = function (d, h, b) { var I, F, B, U, X; if (b == null && (b = r), !(F = d.slice(0, h)).length) return F; for (i(F, b), B = 0, U = (X = d.slice(h)).length; B < U; B++)I = X[B], l(F, I, b); return F.sort(b).reverse() }, _ = function (d, h, b) { var I, F, B, U, X, lt, dt, gt, wt; if (b == null && (b = r), 10 * h <= d.length) { if (!(B = d.slice(0, h).sort(b)).length) return B; for (F = B[B.length - 1], U = 0, lt = (dt = d.slice(h)).length; U < lt; U++)b(I = dt[U], F) < 0 && (f(B, I, 0, null, b), B.pop(), F = B[B.length - 1]); return B } for (i(d, b), wt = [], X = 0, gt = p(h, d.length); 0 <= gt ? X < gt : X > gt; 0 <= gt ? ++X : --X)wt.push(u(d, b)); return wt }, k = function (d, h, b, I) { var F, B, U; for (I == null && (I = r), F = d[b]; b > h && I(F, B = d[U = b - 1 >> 1]) < 0;)d[b] = B, b = U; return d[b] = F }, S = function (d, h, b) { var I, F, B, U, X; for (b == null && (b = r), F = d.length, X = h, B = d[h], I = 2 * h + 1; I < F;)(U = I + 1) < F && !(b(d[I], d[U]) < 0) && (I = U), d[h] = d[I], I = 2 * (h = I) + 1; return d[h] = B, k(d, X, h, b) }, n = function () { function d(h) { this.cmp = h ?? r, this.nodes = [] } return d.push = c, d.pop = u, d.replace = s, d.pushpop = l, d.heapify = i, d.updateItem = M, d.nlargest = y, d.nsmallest = _, d.prototype.push = function (h) { return c(this.nodes, h, this.cmp) }, d.prototype.pop = function () { return u(this.nodes, this.cmp) }, d.prototype.peek = function () { return this.nodes[0] }, d.prototype.contains = function (h) { return this.nodes.indexOf(h) !== -1 }, d.prototype.replace = function (h) { return s(this.nodes, h, this.cmp) }, d.prototype.pushpop = function (h) { return l(this.nodes, h, this.cmp) }, d.prototype.heapify = function () { return i(this.nodes, this.cmp) }, d.prototype.updateItem = function (h) { return M(this.nodes, h, this.cmp) }, d.prototype.clear = function () { return this.nodes = [] }, d.prototype.empty = function () { return this.nodes.length === 0 }, d.prototype.size = function () { return this.nodes.length }, d.prototype.clone = function () { var h; return (h = new d).nodes = this.nodes.slice(0), h }, d.prototype.toArray = function () { return this.nodes.slice(0) }, d.prototype.insert = d.prototype.push, d.prototype.top = d.prototype.peek, d.prototype.front = d.prototype.peek, d.prototype.has = d.prototype.contains, d.prototype.copy = d.prototype.clone, d }(), Ee.exports = n }.call(wr); var En, Cn, Pn, Ni = eo.exports, Pt = { exports: {} };/** + * @license + * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE + * Build: `lodash include="intersection,difference,uniq,intersectionWith,differenceWith,uniqWith,toArray,partialRight,keys,isArray,forEach,orderBy" -p -o ./lib/lodash.custom.min.js` + */(function (n, r) { + (function () { + function o(t, e, a) { switch (a.length) { case 0: return t.call(e); case 1: return t.call(e, a[0]); case 2: return t.call(e, a[0], a[1]); case 3: return t.call(e, a[0], a[1], a[2]) }return t.apply(e, a) } function i(t, e) { for (var a = -1, g = t == null ? 0 : t.length; ++a < g && e(t[a], a, t) !== !1;); return t } function u(t, e) { var a; if (a = !(t == null || !t.length)) { if (e == e) t: { a = -1; for (var g = t.length; ++a < g;)if (t[a] === e) break t; a = -1 } else t: { a = p, g = t.length; for (var m = -1; ++m < g;)if (a(t[m], m, t)) { a = m; break t } a = -1 } a = -1 < a } return a } function c(t, e, a) { for (var g = -1, m = t == null ? 0 : t.length; ++g < m;)if (a(e, t[g])) return !0; return !1 } function l(t, e) { for (var a = -1, g = t == null ? 0 : t.length, m = Array(g); ++a < g;)m[a] = e(t[a], a, t); return m } function s(t, e) { for (var a = -1, g = e.length, m = t.length; ++a < g;)t[m + a] = e[a]; return t } function f(t, e) { for (var a = -1, g = t == null ? 0 : t.length; ++a < g;)if (e(t[a], a, t)) return !0; return !1 } function p(t) { return t != t } function y(t) { return function (e) { return t(e) } } function _(t, e) { return t.has(e) } function M(t) { var e = -1, a = Array(t.size); return t.forEach(function (g, m) { a[++e] = [m, g] }), a } function k(t) { var e = Object; return function (a) { return t(e(a)) } } function S(t, e) { for (var a = -1, g = t.length, m = 0, w = []; ++a < g;) { var N = t[a]; N !== e && N !== "__lodash_placeholder__" || (t[a] = "__lodash_placeholder__", w[m++] = a) } return w } function d(t) { var e = -1, a = Array(t.size); return t.forEach(function (g) { a[++e] = g }), a } function h() { } function b(t) { this.__wrapped__ = t, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = 4294967295, this.__views__ = [] } function I(t) { var e = -1, a = t == null ? 0 : t.length; for (this.clear(); ++e < a;) { var g = t[e]; this.set(g[0], g[1]) } } function F(t) { var e = -1, a = t == null ? 0 : t.length; for (this.clear(); ++e < a;) { var g = t[e]; this.set(g[0], g[1]) } } function B(t) { var e = -1, a = t == null ? 0 : t.length; for (this.clear(); ++e < a;) { var g = t[e]; this.set(g[0], g[1]) } } function U(t) { var e = -1, a = t == null ? 0 : t.length; for (this.__data__ = new B; ++e < a;)this.add(t[e]) } function X(t) { this.size = (this.__data__ = new F(t)).size } function lt(t, e) { var a = xt(t), g = !a && un(t), m = !a && !g && Qr(t), w = !a && !g && !m && xn(t); if (a = a || g || m || w) { g = t.length; for (var N = String, L = -1, D = Array(g); ++L < g;)D[L] = N(L); g = D } else g = []; var E; N = g.length; for (E in t) !e && !Tt.call(t, E) || a && (E == "length" || m && (E == "offset" || E == "parent") || w && (E == "buffer" || E == "byteLength" || E == "byteOffset") || W(E, N)) || g.push(E); return g } function dt(t, e, a) { var g = t[e]; Tt.call(t, e) && kt(g, a) && (a !== Z || e in t) || wt(t, e, a) } function gt(t, e) { for (var a = t.length; a--;)if (kt(t[a][0], e)) return a; return -1 } function wt(t, e, a) { e == "__proto__" && on ? on(t, e, { configurable: !0, enumerable: !0, value: a, writable: !0 }) : t[e] = a } function jt(t, e, a, g, m, w) { var N, L = 1 & e, D = 2 & e, E = 4 & e; if (a && (N = m ? a(t, g, m, w) : a(t)), N !== Z) return N; if (!Kt(t)) return t; if (g = xt(t)) { if (N = function (Q) { var ot = Q.length, vt = new Q.constructor(ot); return ot && typeof Q[0] == "string" && Tt.call(Q, "index") && (vt.index = Q.index, vt.input = Q.input), vt }(t), !L) return $t(t, N) } else { var O = Rt(t), R = O == "[object Function]" || O == "[object GeneratorFunction]"; if (Qr(t)) return function (Q, ot) { if (ot) return Q.slice(); var vt = Q.length; return vt = pe ? pe(vt) : new Q.constructor(vt), Q.copy(vt), vt }(t, L); if (O == "[object Object]" || O == "[object Arguments]" || R && !m) { if (N = D || R || typeof t.constructor != "function" || bt(t) ? {} : Ln(de(t)), !L) return D ? function (Q, ot) { return cr(Q, we(Q), ot) }(t, function (Q, ot) { return Q && cr(ot, Xr(ot), Q) }(N, t)) : function (Q, ot) { return cr(Q, Sn(Q), ot) }(t, function (Q, ot) { return Q && cr(ot, br(ot), Q) }(N, t)) } else { if (!yt[O]) return m ? t : {}; N = function (Q, ot, vt) { var Nt = Q.constructor; switch (ot) { case "[object ArrayBuffer]": return ur(Q); case "[object Boolean]": case "[object Date]": return new Nt(+Q); case "[object DataView]": return ot = vt ? ur(Q.buffer) : Q.buffer, new Q.constructor(ot, Q.byteOffset, Q.byteLength); case "[object Float32Array]": case "[object Float64Array]": case "[object Int8Array]": case "[object Int16Array]": case "[object Int32Array]": case "[object Uint8Array]": case "[object Uint8ClampedArray]": case "[object Uint16Array]": case "[object Uint32Array]": return ot = vt ? ur(Q.buffer) : Q.buffer, new Q.constructor(ot, Q.byteOffset, Q.length); case "[object Map]": return new Nt; case "[object Number]": case "[object String]": return new Nt(Q); case "[object RegExp]": return (ot = new Q.constructor(Q.source, _o.exec(Q))).lastIndex = Q.lastIndex, ot; case "[object Set]": return new Nt; case "[object Symbol]": return Yr ? Object(Yr.call(Q)) : {} } }(t, O, L) } } if (w || (w = new X), m = w.get(t)) return m; if (w.set(t, N), Le(t)) return t.forEach(function (V) { N.add(jt(V, e, a, V, t, w)) }), N; if (Ie(t)) return t.forEach(function (V, Q) { N.set(Q, jt(V, e, a, Q, t, w)) }), N; D = E ? D ? ut : rt : D ? Xr : br; var et = g ? Z : D(t); return i(et || t, function (V, Q) { et && (V = t[Q = V]), dt(N, Q, jt(V, e, a, Q, t, w)) }), N } function Et(t, e, a, g) { var m = -1, w = u, N = !0, L = t.length, D = [], E = e.length; if (!L) return D; a && (e = l(e, y(a))), g ? (w = c, N = !1) : 200 <= e.length && (w = _, N = !1, e = new U(e)); t: for (; ++m < L;) { var O = t[m], R = a == null ? O : a(O); if (O = g || O !== 0 ? O : 0, N && R == R) { for (var et = E; et--;)if (e[et] === R) continue t; D.push(O) } else w(e, R, g) || D.push(O) } return D } function Bt(t, e, a, g, m) { var w = -1, N = t.length; for (a || (a = q), m || (m = []); ++w < N;) { var L = t[w]; 0 < e && a(L) ? 1 < e ? Bt(L, e - 1, a, g, m) : s(m, L) : g || (m[m.length] = L) } return m } function sr(t, e) { for (var a = 0, g = (e = Ft(e, t)).length; t != null && a < g;)t = t[ir(e[a++])]; return a && a == g ? t : Z } function er(t, e, a) { return e = e(t), xt(t) ? e : s(e, a(t)) } function Ct(t) { if (t == null) t = t === Z ? "[object Undefined]" : "[object Null]"; else if (Mr && Mr in Object(t)) { var e = Tt.call(t, Mr), a = t[Mr]; try { t[Mr] = Z; var g = !0 } catch { } var m = ge.call(t); g && (e ? t[Mr] = a : delete t[Mr]), t = m } else t = ge.call(t); return t } function Vt(t, e, a) { for (var g = a ? c : u, m = t[0].length, w = t.length, N = w, L = Array(w), D = 1 / 0, E = []; N--;) { var O = t[N]; N && e && (O = l(O, y(e))), D = kn(O.length, D), L[N] = !a && (e || 120 <= m && 120 <= O.length) ? new U(N && O) : Z } O = t[0]; var R = -1, et = L[0]; t: for (; ++R < m && E.length < D;) { var V = O[R], Q = e ? e(V) : V; if (V = a || V !== 0 ? V : 0, et ? !_(et, Q) : !g(E, Q, a)) { for (N = w; --N;) { var ot = L[N]; if (ot ? !_(ot, Q) : !g(t[N], Q, a)) continue t } et && et.push(Q), E.push(V) } } return E } function qt(t) { return Xt(t) && Ct(t) == "[object Arguments]" } function Gt(t, e, a, g, m) { if (t === e) e = !0; else if (t == null || e == null || !Xt(t) && !Xt(e)) e = t != t && e != e; else t: { var w, N, L = xt(t), D = xt(e), E = (w = (w = L ? "[object Array]" : Rt(t)) == "[object Arguments]" ? "[object Object]" : w) == "[object Object]"; if (D = (N = (N = D ? "[object Array]" : Rt(e)) == "[object Arguments]" ? "[object Object]" : N) == "[object Object]", (N = w == N) && Qr(t)) { if (!Qr(e)) { e = !1; break t } L = !0, E = !1 } if (N && !E) m || (m = new X), e = L || xn(t) ? J(t, e, a, g, Gt, m) : T(t, e, w, a, g, Gt, m); else { if (!(1 & a) && (L = E && Tt.call(t, "__wrapped__"), w = D && Tt.call(e, "__wrapped__"), L || w)) { t = L ? t.value() : t, e = w ? e.value() : e, m || (m = new X), e = Gt(t, e, a, g, m); break t } if (N) r: if (m || (m = new X), L = 1 & a, w = rt(t), D = w.length, N = rt(e).length, D == N || L) { for (E = D; E--;) { var O = w[E]; if (!(L ? O in e : Tt.call(e, O))) { e = !1; break r } } if ((N = m.get(t)) && m.get(e)) e = N == e; else { N = !0, m.set(t, e), m.set(e, t); for (var R = L; ++E < D;) { var et = t[O = w[E]], V = e[O]; if (g) var Q = L ? g(V, et, O, e, t, m) : g(et, V, O, t, e, m); if (Q === Z ? et !== V && !Gt(et, V, a, g, m) : !Q) { N = !1; break } R || (R = O == "constructor") } N && !R && (a = t.constructor) != (g = e.constructor) && "constructor" in t && "constructor" in e && !(typeof a == "function" && a instanceof a && typeof g == "function" && g instanceof g) && (N = !1), m.delete(t), m.delete(e), e = N } } else e = !1; else e = !1 } } return e } function gr(t) { return typeof t == "function" ? t : t == null ? Ir : typeof t == "object" ? xt(t) ? function (a, g) { return ht(a) && g == g && !Kt(g) ? ct(ir(a), g) : function (m) { var w = Kn(m, a); return w === Z && w === g ? Xn(m, a) : Gt(g, w, 3) } }(t[0], t[1]) : function (a) { var g = function (w) { for (var N = br(w), L = N.length; L--;) { var D = N[L], E = w[D]; N[L] = [D, E, E == E && !Kt(E)] } return N }(a); return g.length == 1 && g[0][2] ? ct(g[0][0], g[0][1]) : function (m) { return m === a || function (N, L) { var D = L.length, E = D; if (N == null) return !E; for (N = Object(N); D--;)if ((O = L[D])[2] ? O[1] !== N[O[0]] : !(O[0] in N)) return !1; for (; ++D < E;) { var O, R = (O = L[D])[0], et = N[R], V = O[1]; if (O[2]) { if (et === Z && !(R in N)) return !1 } else if (!Gt(V, et, 3, void 0, O = new X)) return !1 } return !0 }(m, g) } }(t) : ne(t) } function or(t, e, a) { var g = -1; return e = l(e.length ? e : [Ir], y(P())), function (w, N) { var L = w.length; for (w.sort(N); L--;)w[L] = w[L].c; return w }(t = function (w, N) { var L = -1, D = _r(w) ? Array(w.length) : []; return be(w, function (E, O, R) { D[++L] = N(E, O, R) }), D }(t, function (m) { return { a: l(e, function (w) { return w(m) }), b: ++g, c: m } }), function (m, w) { var N; t: { N = -1; for (var L = m.a, D = w.a, E = L.length, O = a.length; ++N < E;) { var R; r: { R = L[N]; var et = D[N]; if (R !== et) { var V = R !== Z, Q = R === null, ot = R == R, vt = vr(R), Nt = et !== Z, Mt = et === null, It = et == et, Qt = vr(et); if (!Mt && !Qt && !vt && R > et || vt && Nt && It && !Mt && !Qt || Q && Nt && It || !V && It || !ot) { R = 1; break r } if (!Q && !vt && !Qt && R < et || Qt && V && ot && !Q && !vt || Mt && V && ot || !Nt && ot || !It) { R = -1; break r } } R = 0 } if (R) { N = N >= O ? R : R * (a[N] == "desc" ? -1 : 1); break t } } N = m.b - w.b } return N }) } function zt(t) { return Ne(tt(t, Ir), t + "") } function lr(t) { if (typeof t == "string") return t; if (xt(t)) return l(t, lr) + ""; if (vr(t)) return ve ? ve.call(t) : ""; var e = t + ""; return e == "0" && 1 / t == -Pr ? "-0" : e } function pr(t, e, a) { var g = -1, m = u, w = t.length, N = !0, L = [], D = L; if (a) N = !1, m = c; else if (200 <= w) { if (m = e ? null : Bo(t)) return d(m); N = !1, m = _, D = new U } else D = e ? [] : L; t: for (; ++g < w;) { var E = t[g], O = e ? e(E) : E; if (E = a || E !== 0 ? E : 0, N && O == O) { for (var R = D.length; R--;)if (D[R] === O) continue t; e && D.push(O), L.push(E) } else m(D, O, a) || (D !== L && D.push(O), L.push(E)) } return L } function Wt(t) { return mr(t) ? t : [] } function Ft(t, e) { return xt(t) ? t : ht(t, e) ? [t] : qo(Jn(t)) } function ur(t) { var e = new t.constructor(t.byteLength); return new en(e).set(new en(t)), e } function Zt(t, e, a, g) { var m = -1, w = t.length, N = a.length, L = -1, D = e.length, E = Lr(w - N, 0), O = Array(D + E); for (g = !g; ++L < D;)O[L] = e[L]; for (; ++m < N;)(g || m < w) && (O[a[m]] = t[m]); for (; E--;)O[L++] = t[m++]; return O } function Ot(t, e, a, g) { var m = -1, w = t.length, N = -1, L = a.length, D = -1, E = e.length, O = Lr(w - L, 0), R = Array(O + E); for (g = !g; ++m < O;)R[m] = t[m]; for (O = m; ++D < E;)R[O + D] = e[D]; for (; ++N < L;)(g || m < w) && (R[O + a[N]] = t[m++]); return R } function $t(t, e) { var a = -1, g = t.length; for (e || (e = Array(g)); ++a < g;)e[a] = t[a]; return e } function cr(t, e, a) { var g = !a; a || (a = {}); for (var m = -1, w = e.length; ++m < w;) { var N = e[m], L = Z; L === Z && (L = t[N]), g ? wt(a, N, L) : dt(a, N, L) } return a } function A(t) { return function () { switch ((e = arguments).length) { case 0: return new t; case 1: return new t(e[0]); case 2: return new t(e[0], e[1]); case 3: return new t(e[0], e[1], e[2]); case 4: return new t(e[0], e[1], e[2], e[3]); case 5: return new t(e[0], e[1], e[2], e[3], e[4]); case 6: return new t(e[0], e[1], e[2], e[3], e[4], e[5]); case 7: return new t(e[0], e[1], e[2], e[3], e[4], e[5], e[6]) }var e, a = Ln(t.prototype); return Kt(e = t.apply(a, e)) ? e : a } } function j(t, e, a) { var g = A(t); return function m() { for (var w = arguments.length, N = Array(w), L = w, D = H(m); L--;)N[L] = arguments[L]; return (w -= (L = 3 > w && N[0] !== D && N[w - 1] !== D ? [] : S(N, D)).length) < a ? v(t, e, z, m.placeholder, Z, N, L, Z, Z, a - w) : o(this && this !== Ut && this instanceof m ? g : t, this, N) } } function z(t, e, a, g, m, w, N, L, D, E) { var O = 128 & e, R = 1 & e, et = 2 & e, V = 24 & e, Q = 512 & e, ot = et ? Z : A(t); return function vt() { for (var Nt = arguments.length, Mt = Array(Nt), It = Nt; It--;)Mt[It] = arguments[It]; if (V) { var Qt, jr = H(vt); for (It = Mt.length, Qt = 0; It--;)Mt[It] === jr && ++Qt } if (g && (Mt = Zt(Mt, g, m, V)), w && (Mt = Ot(Mt, w, N, V)), Nt -= Qt, V && Nt < E) return jr = S(Mt, jr), v(t, e, z, vt.placeholder, a, Mt, jr, L, D, E - Nt); if (jr = R ? a : this, It = et ? jr[t] : t, Nt = Mt.length, L) { Qt = Mt.length; for (var An = kn(L.length, Qt), Wo = $t(Mt); An--;) { var Se = L[An]; Mt[An] = W(Se, Qt) ? Wo[Se] : Z } } else Q && 1 < Nt && Mt.reverse(); return O && D < Nt && (Mt.length = D), this && this !== Ut && this instanceof vt && (It = ot || A(It)), It.apply(jr, Mt) } } function x(t, e, a, g) { var m = 1 & e, w = A(t); return function N() { for (var L = -1, D = arguments.length, E = -1, O = g.length, R = Array(O + D), et = this && this !== Ut && this instanceof N ? w : t; ++E < O;)R[E] = g[E]; for (; D--;)R[E++] = arguments[++L]; return o(et, m ? a : this, R) } } function v(t, e, a, g, m, w, N, L, D, E) { var O = 8 & e, R = O ? N : Z; 4 & (e = (e | (O ? 32 : 64)) & ~(O ? 64 : 32)) || (e &= -4), m = [t, e, m, O ? w : Z, R, w = O ? Z : w, N = O ? Z : N, L, D, E], a = a.apply(Z, m); t: for (L = t.name + "", D = me[L], E = Tt.call(me, L) ? D.length : 0; E--;)if (O = D[E], R = O.func, R == null || R == t) { L = O.name; break t } return typeof (D = h[L]) == "function" && L in b.prototype ? t === D ? L = !0 : L = !!(L = je(D)) && t === L[0] : L = !1, L && ke(a, m), a.placeholder = g, mt(a, t, e) } function J(t, e, a, g, m, w) { var N = 1 & a, L = t.length; if (L != (D = e.length) && !(N && D > L)) return !1; if ((D = w.get(t)) && w.get(e)) return D == e; var D = -1, E = !0, O = 2 & a ? new U : Z; for (w.set(t, e), w.set(e, t); ++D < L;) { var R = t[D], et = e[D]; if (g) var V = N ? g(et, R, D, e, t, w) : g(R, et, D, t, e, w); if (V !== Z) { if (V) continue; E = !1; break } if (O) { if (!f(e, function (Q, ot) { if (!_(O, ot) && (R === Q || m(R, Q, a, g, w))) return O.push(ot) })) { E = !1; break } } else if (R !== et && !m(R, et, a, g, w)) { E = !1; break } } return w.delete(t), w.delete(e), E } function T(t, e, a, g, m, w, N) { switch (a) { case "[object DataView]": if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset) break; t = t.buffer, e = e.buffer; case "[object ArrayBuffer]": if (t.byteLength != e.byteLength || !w(new en(t), new en(e))) break; return !0; case "[object Boolean]": case "[object Date]": case "[object Number]": return kt(+t, +e); case "[object Error]": return t.name == e.name && t.message == e.message; case "[object RegExp]": case "[object String]": return t == e + ""; case "[object Map]": var L = M; case "[object Set]": if (L || (L = d), t.size != e.size && !(1 & g)) break; return (a = N.get(t)) ? a == e : (g |= 2, N.set(t, e), e = J(L(t), L(e), g, m, w, N), N.delete(t), e); case "[object Symbol]": if (Yr) return Yr.call(t) == Yr.call(e) }return !1 } function rt(t) { return er(t, br, Sn) } function ut(t) { return er(t, Xr, we) } function H(t) { return (Tt.call(h, "placeholder") ? h : t).placeholder } function P() { var t = (t = h.iteratee || yn) === yn ? gr : t; return arguments.length ? t(arguments[0], arguments[1]) : t } function $(t, e) { var a = t.__data__, g = typeof e; return (g == "string" || g == "number" || g == "symbol" || g == "boolean" ? e !== "__proto__" : e === null) ? a[typeof e == "string" ? "string" : "hash"] : a.map } function G(t, e) { var a = t == null ? Z : t[e]; return !Kt(a) || se && se in a || !(dn(a) ? So : bo).test(Jt(a)) ? Z : a } function q(t) { return xt(t) || un(t) || !!(_e && t && t[_e]) } function W(t, e) { var a = typeof t; return !!(e = e ?? 9007199254740991) && (a == "number" || a != "symbol" && jo.test(t)) && -1 < t && t % 1 == 0 && t < e } function ht(t, e) { if (xt(t)) return !1; var a = typeof t; return !(a != "number" && a != "symbol" && a != "boolean" && t != null && !vr(t)) || co.test(t) || !uo.test(t) || e != null && t in Object(e) } function bt(t) { var e = t && t.constructor; return t === (typeof e == "function" && e.prototype || rn) } function ct(t, e) { return function (a) { return a != null && a[t] === e && (e !== Z || t in Object(a)) } } function tt(t, e) { var a = Lr((a = void 0) === Z ? t.length - 1 : a, 0); return function () { for (var g = arguments, m = -1, w = Lr(g.length - a, 0), N = Array(w); ++m < w;)N[m] = g[a + m]; for (m = -1, w = Array(a + 1); ++m < a;)w[m] = g[m]; return w[a] = e(N), o(t, this, w) } } function mt(t, e, a) { + var g = e + ""; e = Ne; var m, w = Nr; return a = w(m = (m = g.match(po)) ? m[1].split(ho) : [], a), (w = a.length) && (a[m = w - 1] = (1 < w ? "& " : "") + a[m], a = a.join(2 < w ? ", " : " "), g = g.replace(go, `{ +/* [wrapped with `+ a + `] */ +`)), e(t, g) + } function Yt(t) { var e = 0, a = 0; return function () { var g = To(), m = 16 - (g - a); if (a = g, 0 < m) { if (800 <= ++e) return arguments[0] } else e = 0; return t.apply(Z, arguments) } } function ir(t) { if (typeof t == "string" || vr(t)) return t; var e = t + ""; return e == "0" && 1 / t == -Pr ? "-0" : e } function Jt(t) { if (t != null) { try { return fe.call(t) } catch { } return t + "" } return "" } function Nr(t, e) { return i(lo, function (a) { var g = "_." + a[0]; e & a[1] && !u(t, g) && t.push(g) }), t.sort() } function dr(t) { var e = t == null ? 0 : t.length; return e ? t[e - 1] : Z } function fr(t, e) { return (xt(t) ? i : be)(t, P(e, 3)) } function it(t, e) { function a() { var g = arguments, m = e ? e.apply(this, g) : g[0], w = a.cache; return w.has(m) ? w.get(m) : (g = t.apply(this, g), a.cache = w.set(m, g) || w, g) } if (typeof t != "function" || e != null && typeof e != "function") throw new TypeError("Expected a function"); return a.cache = new (it.Cache || B), a } function kt(t, e) { return t === e || t != t && e != e } function _r(t) { return t != null && Kr(t.length) && !dn(t) } function mr(t) { return Xt(t) && _r(t) } function dn(t) { return !!Kt(t) && ((t = Ct(t)) == "[object Function]" || t == "[object GeneratorFunction]" || t == "[object AsyncFunction]" || t == "[object Proxy]") } function Kr(t) { return typeof t == "number" && -1 < t && t % 1 == 0 && 9007199254740991 >= t } function Kt(t) { var e = typeof t; return t != null && (e == "object" || e == "function") } function Xt(t) { return t != null && typeof t == "object" } function Rn(t) { return typeof t == "string" || !xt(t) && Xt(t) && Ct(t) == "[object String]" } function vr(t) { return typeof t == "symbol" || Xt(t) && Ct(t) == "[object Symbol]" } function Hn(t) { return t ? (t = Vn(t)) === Pr || t === -Pr ? 17976931348623157e292 * (0 > t ? -1 : 1) : t == t ? t : 0 : t === 0 ? t : 0 } function hn(t) { var e = (t = Hn(t)) % 1; return t == t ? e ? t - e : t : 0 } function Vn(t) { if (typeof t == "number") return t; if (vr(t)) return oe; if (Kt(t) && (t = Kt(t = typeof t.valueOf == "function" ? t.valueOf() : t) ? t + "" : t), typeof t != "string") return t === 0 ? t : +t; t = t.replace(so, ""); var e = vo.test(t); return e || Mo.test(t) ? No(t.slice(2), e ? 2 : 8) : mo.test(t) ? oe : +t } function Jn(t) { return t == null ? "" : lr(t) } function Kn(t, e, a) { return (t = t == null ? Z : sr(t, e)) === Z ? a : t } function Xn(t, e) { var a; if (a = t != null) { for (var g, m = -1, w = (g = Ft(e, a = t)).length, N = !1; ++m < w;) { var L = ir(g[m]); if (!(N = a != null && a != null && L in Object(a))) break; a = a[L] } N || ++m != w ? a = N : a = !!(w = a == null ? 0 : a.length) && Kr(w) && W(L, w) && (xt(a) || un(a)) } return a } function br(t) { if (_r(t)) t = lt(t); else if (bt(t)) { var e, a = []; for (e in Object(t)) Tt.call(t, e) && e != "constructor" && a.push(e); t = a } else t = Ao(t); return t } function Xr(t) { if (_r(t)) t = lt(t, !0); else if (Kt(t)) { var e, a = bt(t), g = []; for (e in t) (e != "constructor" || !a && Tt.call(t, e)) && g.push(e); t = g } else { if (e = [], t != null) for (a in Object(t)) e.push(a); t = e } return t } function te(t) { return t == null ? [] : function (a, g) { return l(g, function (m) { return a[m] }) }(t, br(t)) } function re(t) { return function () { return t } } function Ir(t) { return t } function yn(t) { return gr(typeof t == "function" ? t : jt(t, 1)) } function _n() { } function ne(t) { return ht(t) ? function (a) { return function (g) { return g == null ? Z : g[a] } }(ir(t)) : function (a) { return function (g) { return sr(g, a) } }(t) } function mn() { return [] } function ee() { return !1 } var Z, Pr = 1 / 0, oe = NaN, lo = [["ary", 128], ["bind", 1], ["bindKey", 2], ["curry", 8], ["curryRight", 16], ["flip", 512], ["partial", 32], ["partialRight", 64], ["rearg", 256]], uo = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, co = /^\w*$/, fo = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, so = /^\s+|\s+$/g, go = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, po = /\{\n\/\* \[wrapped with (.+)\] \*/, ho = /,? & /, yo = /\\(\\)?/g, _o = /\w*$/, mo = /^[-+]0x[0-9a-f]+$/i, vo = /^0b[01]+$/i, bo = /^\[object .+?Constructor\]$/, Mo = /^0o[0-7]+$/i, jo = /^(?:0|[1-9]\d*)$/, wo = RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*", "g"), ko = RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"), _t = {}; _t["[object Float32Array]"] = _t["[object Float64Array]"] = _t["[object Int8Array]"] = _t["[object Int16Array]"] = _t["[object Int32Array]"] = _t["[object Uint8Array]"] = _t["[object Uint8ClampedArray]"] = _t["[object Uint16Array]"] = _t["[object Uint32Array]"] = !0, _t["[object Arguments]"] = _t["[object Array]"] = _t["[object ArrayBuffer]"] = _t["[object Boolean]"] = _t["[object DataView]"] = _t["[object Date]"] = _t["[object Error]"] = _t["[object Function]"] = _t["[object Map]"] = _t["[object Number]"] = _t["[object Object]"] = _t["[object RegExp]"] = _t["[object Set]"] = _t["[object String]"] = _t["[object WeakMap]"] = !1; var yt = {}; yt["[object Arguments]"] = yt["[object Array]"] = yt["[object ArrayBuffer]"] = yt["[object DataView]"] = yt["[object Boolean]"] = yt["[object Date]"] = yt["[object Float32Array]"] = yt["[object Float64Array]"] = yt["[object Int8Array]"] = yt["[object Int16Array]"] = yt["[object Int32Array]"] = yt["[object Map]"] = yt["[object Number]"] = yt["[object Object]"] = yt["[object RegExp]"] = yt["[object Set]"] = yt["[object String]"] = yt["[object Symbol]"] = yt["[object Uint8Array]"] = yt["[object Uint8ClampedArray]"] = yt["[object Uint16Array]"] = yt["[object Uint32Array]"] = !0, yt["[object Error]"] = yt["[object Function]"] = yt["[object WeakMap]"] = !1; var hr, No = parseInt, ie = typeof wr == "object" && wr && wr.Object === Object && wr, Io = typeof self == "object" && self && self.Object === Object && self, Ut = ie || Io || Function("return this")(), vn = r && !r.nodeType && r, tn = vn && n && !n.nodeType && n, ae = tn && tn.exports === vn, bn = ae && ie.process; t: { try { hr = bn && bn.binding && bn.binding("util"); break t } catch { } hr = void 0 } var le = hr && hr.isMap, ue = hr && hr.isSet, ce = hr && hr.isTypedArray, Lo = Array.prototype, rn = Object.prototype, Mn = Ut["__core-js_shared__"], fe = Function.prototype.toString, Tt = rn.hasOwnProperty, se = function () { var t = /[^.]+$/.exec(Mn && Mn.keys && Mn.keys.IE_PROTO || ""); return t ? "Symbol(src)_1." + t : "" }(), ge = rn.toString, So = RegExp("^" + fe.call(Tt).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), nn = ae ? Ut.Buffer : Z, yr = Ut.Symbol, en = Ut.Uint8Array, pe = nn ? nn.f : Z, de = k(Object.getPrototypeOf), he = Object.create, ye = rn.propertyIsEnumerable, zo = Lo.splice, _e = yr ? yr.isConcatSpreadable : Z, jn = yr ? yr.iterator : Z, Mr = yr ? yr.toStringTag : Z, on = function () { try { var t = G(Object, "defineProperty"); return t({}, "", {}), t } catch { } }(), wn = Object.getOwnPropertySymbols, xo = nn ? nn.isBuffer : Z, Ao = k(Object.keys), Lr = Math.max, kn = Math.min, To = Date.now, Nn = G(Ut, "DataView"), Br = G(Ut, "Map"), In = G(Ut, "Promise"), Sr = G(Ut, "Set"), qr = G(Ut, "WeakMap"), Fr = G(Object, "create"), an = qr && new qr, me = {}, Do = Jt(Nn), Eo = Jt(Br), Co = Jt(In), Oo = Jt(Sr), $o = Jt(qr), ln = yr ? yr.prototype : Z, Yr = ln ? ln.valueOf : Z, ve = ln ? ln.toString : Z, Ln = function () { function t() { } return function (e) { return Kt(e) ? he ? he(e) : (t.prototype = e, e = new t, t.prototype = Z, e) : {} } }(); b.prototype = Ln(function () { }.prototype), b.prototype.constructor = b, I.prototype.clear = function () { this.__data__ = Fr ? Fr(null) : {}, this.size = 0 }, I.prototype.delete = function (t) { return t = this.has(t) && delete this.__data__[t], this.size -= t ? 1 : 0, t }, I.prototype.get = function (t) { var e = this.__data__; return Fr ? (t = e[t]) === "__lodash_hash_undefined__" ? Z : t : Tt.call(e, t) ? e[t] : Z }, I.prototype.has = function (t) { var e = this.__data__; return Fr ? e[t] !== Z : Tt.call(e, t) }, I.prototype.set = function (t, e) { var a = this.__data__; return this.size += this.has(t) ? 0 : 1, a[t] = Fr && e === Z ? "__lodash_hash_undefined__" : e, this }, F.prototype.clear = function () { this.__data__ = [], this.size = 0 }, F.prototype.delete = function (t) { var e = this.__data__; return !(0 > (t = gt(e, t)) || (t == e.length - 1 ? e.pop() : zo.call(e, t, 1), --this.size, 0)) }, F.prototype.get = function (t) { var e = this.__data__; return 0 > (t = gt(e, t)) ? Z : e[t][1] }, F.prototype.has = function (t) { return -1 < gt(this.__data__, t) }, F.prototype.set = function (t, e) { var a = this.__data__, g = gt(a, t); return 0 > g ? (++this.size, a.push([t, e])) : a[g][1] = e, this }, B.prototype.clear = function () { this.size = 0, this.__data__ = { hash: new I, map: new (Br || F), string: new I } }, B.prototype.delete = function (t) { return t = $(this, t).delete(t), this.size -= t ? 1 : 0, t }, B.prototype.get = function (t) { return $(this, t).get(t) }, B.prototype.has = function (t) { return $(this, t).has(t) }, B.prototype.set = function (t, e) { var a = $(this, t), g = a.size; return a.set(t, e), this.size += a.size == g ? 0 : 1, this }, U.prototype.add = U.prototype.push = function (t) { return this.__data__.set(t, "__lodash_hash_undefined__"), this }, U.prototype.has = function (t) { return this.__data__.has(t) }, X.prototype.clear = function () { this.__data__ = new F, this.size = 0 }, X.prototype.delete = function (t) { var e = this.__data__; return t = e.delete(t), this.size = e.size, t }, X.prototype.get = function (t) { return this.__data__.get(t) }, X.prototype.has = function (t) { return this.__data__.has(t) }, X.prototype.set = function (t, e) { var a = this.__data__; if (a instanceof F) { var g = a.__data__; if (!Br || 199 > g.length) return g.push([t, e]), this.size = ++a.size, this; a = this.__data__ = new B(g) } return a.set(t, e), this.size = a.size, this }; var be = function (t, e) { if (t == null) return t; if (!_r(t)) return function (w, N) { return w && Uo(w, N, br) }(t, e); for (var a = t.length, g = -1, m = Object(t); ++g < a && e(m[g], g, m) !== !1;); return t }, Uo = function (t, e, a) { for (var g = -1, m = Object(t), w = (a = a(t)).length; w--;) { var N = a[++g]; if (e(m[N], N, m) === !1) break } return t }, Me = an ? function (t, e) { return an.set(t, e), t } : Ir, Po = on ? function (t, e) { return on(t, "toString", { configurable: !0, enumerable: !1, value: re(e), writable: !0 }) } : Ir, Bo = Sr && 1 / d(new Sr([, -0]))[1] == Pr ? function (t) { return new Sr(t) } : _n, je = an ? function (t) { return an.get(t) } : _n, Sn = wn ? function (t) { return t == null ? [] : (t = Object(t), function (a, g) { for (var m = -1, w = a == null ? 0 : a.length, N = 0, L = []; ++m < w;) { var D = a[m]; g(D, m, a) && (L[N++] = D) } return L }(wn(t), function (e) { return ye.call(t, e) })) } : mn, we = wn ? function (t) { for (var e = []; t;)s(e, Sn(t)), t = de(t); return e } : mn, Rt = Ct; (Nn && Rt(new Nn(new ArrayBuffer(1))) != "[object DataView]" || Br && Rt(new Br) != "[object Map]" || In && Rt(In.resolve()) != "[object Promise]" || Sr && Rt(new Sr) != "[object Set]" || qr && Rt(new qr) != "[object WeakMap]") && (Rt = function (t) { var e = Ct(t); if (t = (t = e == "[object Object]" ? t.constructor : Z) ? Jt(t) : "") switch (t) { case Do: return "[object DataView]"; case Eo: return "[object Map]"; case Co: return "[object Promise]"; case Oo: return "[object Set]"; case $o: return "[object WeakMap]" }return e }); var ke = Yt(Me), Ne = Yt(Po), qo = function (t) { var e = (t = it(t, function (a) { return e.size === 500 && e.clear(), a })).cache; return t }(function (t) { var e = []; return t.charCodeAt(0) === 46 && e.push(""), t.replace(fo, function (a, g, m, w) { e.push(m ? w.replace(yo, "$1") : g || a) }), e }), Fo = zt(function (t, e) { return mr(t) ? Et(t, Bt(e, 1, mr, !0)) : [] }), Yo = zt(function (t, e) { var a = dr(e); return mr(a) && (a = Z), mr(t) ? Et(t, Bt(e, 1, mr, !0), Z, a) : [] }), Qo = zt(function (t) { var e = l(t, Wt); return e.length && e[0] === t[0] ? Vt(e) : [] }), Go = zt(function (t) { var e = dr(t), a = l(t, Wt); return (e = typeof e == "function" ? e : Z) && a.pop(), a.length && a[0] === t[0] ? Vt(a, Z, e) : [] }); it.Cache = B; var zn = zt(function (t, e) { var a, g, m = S(e, H(zn)), w = t, N = Z, L = e, D = m, E = 64; if (!(m = 2 & E) && typeof w != "function") throw new TypeError("Expected a function"); var O = L ? L.length : 0; if (O || (E &= -97, L = D = Z), a = a === Z ? a : Lr(hn(a), 0), g = g === Z ? g : hn(g), O -= D ? D.length : 0, 64 & E) { var R = L, et = D; L = D = Z } var V = m ? Z : je(w); return a = [w, E, N, L, D, R, et, void 0, a, g], V && (N = (L = a[1]) | (w = V[1]), g = w == 128 && L == 8 || w == 128 && L == 256 && a[7].length <= V[8] || w == 384 && V[7].length <= V[8] && L == 8, 131 > N || g) && (1 & w && (a[2] = V[2], N |= 1 & L ? 0 : 4), (L = V[3]) && (g = a[3], a[3] = g ? Zt(g, L, V[4]) : L, a[4] = g ? S(a[3], "__lodash_placeholder__") : V[4]), (L = V[5]) && (g = a[5], a[5] = g ? Ot(g, L, V[6]) : L, a[6] = g ? S(a[5], "__lodash_placeholder__") : V[6]), (L = V[7]) && (a[7] = L), 128 & w && (a[8] = a[8] == null ? V[8] : kn(a[8], V[8])), a[9] == null && (a[9] = V[9]), a[0] = V[0], a[1] = N), w = a[0], E = a[1], N = a[2], L = a[3], D = a[4], !(g = a[9] = a[9] === Z ? m ? 0 : w.length : Lr(a[9] - O, 0)) && 24 & E && (E &= -25), mt((V ? Me : ke)(E && E != 1 ? E == 8 || E == 16 ? j(w, E, g) : E != 32 && E != 33 || D.length ? z.apply(Z, a) : x(w, E, N, L) : function (ot, vt, Nt) { var Mt = 1 & vt, It = A(ot); return function Qt() { return (this && this !== Ut && this instanceof Qt ? It : ot).apply(Mt ? Nt : this, arguments) } }(w, E, N), a), w, E) }), un = qt(function () { return arguments }()) ? qt : function (t) { return Xt(t) && Tt.call(t, "callee") && !ye.call(t, "callee") }, xt = Array.isArray, Qr = xo || ee, Ie = le ? y(le) : function (e) { return Xt(e) && Rt(e) == "[object Map]" }, Le = ue ? y(ue) : function (e) { return Xt(e) && Rt(e) == "[object Set]" }, xn = ce ? y(ce) : function (e) { return Xt(e) && Kr(e.length) && !!_t[Ct(e)] }; h.constant = re, h.difference = Fo, h.differenceWith = Yo, h.intersection = Qo, h.intersectionWith = Go, h.iteratee = yn, h.keys = br, h.keysIn = Xr, h.memoize = it, h.orderBy = function (t, e, a, g) { return t == null ? [] : (xt(e) || (e = e == null ? [] : [e]), xt(a = g ? Z : a) || (a = a == null ? [] : [a]), or(t, e, a)) }, h.partialRight = zn, h.property = ne, h.toArray = function (t) { if (!t) return []; if (_r(t)) return Rn(t) ? ko.test(t) ? t.match(wo) || [] : t.split("") : $t(t); if (jn && t[jn]) { t = t[jn](); for (var e, a = []; !(e = t.next()).done;)a.push(e.value); return a } return ((e = Rt(t)) == "[object Map]" ? M : e == "[object Set]" ? d : te)(t) }, h.uniq = function (t) { return t && t.length ? pr(t) : [] }, h.uniqWith = function (t, e) { return e = typeof e == "function" ? e : Z, t && t.length ? pr(t, Z, e) : [] }, h.values = te, h.eq = kt, h.forEach = fr, h.get = Kn, h.hasIn = Xn, h.identity = Ir, h.isArguments = un, h.isArray = xt, h.isArrayLike = _r, h.isArrayLikeObject = mr, h.isBuffer = Qr, h.isFunction = dn, h.isLength = Kr, h.isMap = Ie, h.isObject = Kt, h.isObjectLike = Xt, h.isSet = Le, h.isString = Rn, h.isSymbol = vr, h.isTypedArray = xn, h.last = dr, h.stubArray = mn, h.stubFalse = ee, h.noop = _n, h.toFinite = Hn, h.toInteger = hn, h.toNumber = Vn, h.toString = Jn, h.each = fr, h.VERSION = "4.17.5", zn.placeholder = h, tn ? ((tn.exports = h)._ = h, vn._ = h) : Ut._ = h + }).call(wr) +})(Pt, Pt.exports), String.prototype.codePointAt || (En = function () { try { var n = {}, r = Object.defineProperty, o = r(n, n, n) && r } catch { } return o }(), Cn = function (n) { if (this == null) throw TypeError(); var r = String(this), o = r.length, i = n ? Number(n) : 0; if (i != i && (i = 0), !(i < 0 || i >= o)) { var u, c = r.charCodeAt(i); return c >= 55296 && c <= 56319 && o > i + 1 && (u = r.charCodeAt(i + 1)) >= 56320 && u <= 57343 ? 1024 * (c - 55296) + u - 56320 + 65536 : c } }, En ? En(String.prototype, "codePointAt", { value: Cn, configurable: !0, writable: !0 }) : String.prototype.codePointAt = Cn), String.fromCodePoint || function () { var n = function () { try { var u = {}, c = Object.defineProperty, l = c(u, u, u) && c } catch { } return l }(), r = String.fromCharCode, o = Math.floor, i = function (u) { var c, l, s = 16384, f = [], p = -1, y = arguments.length; if (!y) return ""; for (var _ = ""; ++p < y;) { var M = Number(arguments[p]); if (!isFinite(M) || M < 0 || M > 1114111 || o(M) != M) throw RangeError("Invalid code point: " + M); M <= 65535 ? f.push(M) : (c = 55296 + ((M -= 65536) >> 10), l = M % 1024 + 56320, f.push(c, l)), (p + 1 == y || f.length > s) && (_ += r.apply(null, f), f.length = 0) } return _ }; n ? n(String, "fromCodePoint", { value: i, configurable: !0, writable: !0 }) : String.fromCodePoint = i }(); try { Pn = typeof Intl < "u" && Intl.Collator !== void 0 ? Intl.Collator("generic", { sensitivity: "base" }) : null } catch { typeof console !== void 0 && console.warn("Collator could not be initialized and wouldn't be used") } var Bn, Ii = function (r, o, i, u) { var c = [], l = [], s = i && Pn && i.useCollator, f = 1; if (i && i.subcost && typeof i.subcost == "number" && (f = i.subcost), r === o) return 0; var p, y, _, M, k = u(r), S = u(o), d = k.length, h = S.length; if (d === 0) return h; if (h === 0) return d; for (var b = 0, I = 0; b < d;)l[b] = k[b].codePointAt(0), c[b] = ++b; if (s) for (; I < h;)for (p = S[I].codePointAt(0), _ = I++, y = I, b = 0; b < d; b++)M = Pn.compare(String.fromCodePoint(p), String.fromCodePoint(l[b])) === 0 ? _ : _ + f, _ = c[b], y = c[b] = _ > y ? M > y ? y + 1 : M : M > _ ? _ + 1 : M; else for (; I < h;)for (p = S[I].codePointAt(0), _ = I++, y = I, b = 0; b < d; b++)M = p === l[b] ? _ : _ + f, _ = c[b], y = c[b] = _ > y ? M > y ? y + 1 : M : M > _ ? _ + 1 : M; return y }; try { Bn = typeof Intl < "u" && Intl.Collator !== void 0 ? Intl.Collator("generic", { sensitivity: "base" }) : null } catch { typeof console !== void 0 && console.warn("Collator could not be initialized and wouldn't be used") } var qn, Ce = function (r, o, i, u) { var c = [], l = [], s = i && Bn && i.useCollator, f = 1; if (i && i.subcost && typeof i.subcost == "number" && (f = i.subcost), r === o) return 0; var p = r.length, y = o.length; if (p === 0) return y; if (y === 0) return p; if (i && i.wildcards && typeof i.wildcards == "string" && i.wildcards.length > 0) { var _, M, k, S, d, h; if (i.full_process === !1 && i.processed !== !0) { M = (_ = i.wildcards[0]).charCodeAt(0); var b = "[" + function (U) { return U.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") }(i.wildcards) + "]"; if ((r = r.replace(new RegExp(b, "g"), _)) === (o = o.replace(new RegExp(b, "g"), _))) return 0 } else M = (_ = i.wildcards[0].toLowerCase()).charCodeAt(0); for (var I = 0, F = 0; I < p;)l[I] = r.charCodeAt(I), c[I] = ++I; if (s) for (; F < y;)for (k = o.charCodeAt(F), d = F++, S = F, I = 0; I < p; I++)h = Bn.compare(String.fromCharCode(k), String.fromCharCode(l[I])) === 0 || k === M || l[I] === M ? d : d + f, d = c[I], S = c[I] = d > S ? h > S ? S + 1 : h : h > d ? d + 1 : h; else for (; F < y;)for (k = o.charCodeAt(F), d = F++, S = F, I = 0; I < p; I++)h = k === l[I] || k === M || l[I] === M ? d : d + f, d = c[I], S = c[I] = d > S ? h > S ? S + 1 : h : h > d ? d + 1 : h; return S } return u(r, o, i) }; try { qn = typeof Intl < "u" && Intl.Collator !== void 0 ? Intl.Collator("generic", { sensitivity: "base" }) : null } catch { typeof console !== void 0 && console.warn("Collator could not be initialized and wouldn't be used") } var Oe = function (r, o, i) { var u = [], c = [], l = i && qn && i.useCollator, s = 1; if (i && i.subcost && typeof i.subcost == "number" && (s = i.subcost), r === o) return 0; var f, p, y, _, M = r.length, k = o.length; if (M === 0) return k; if (k === 0) return M; for (var S = 0, d = 0; S < M;)c[S] = r.charCodeAt(S), u[S] = ++S; if (l) for (; d < k;)for (f = o.charCodeAt(d), y = d++, p = d, S = 0; S < M; S++)_ = qn.compare(String.fromCharCode(f), String.fromCharCode(c[S])) === 0 ? y : y + s, y = u[S], p = u[S] = y > p ? _ > p ? p + 1 : _ : _ > y ? y + 1 : _; else for (; d < k;)for (f = o.charCodeAt(d), y = d++, p = d, S = 0; S < M; S++)_ = f === c[S] ? y : y + s, y = u[S], p = u[S] = y > p ? _ > p ? p + 1 : _ : _ > y ? y + 1 : _; return p }; (function (n, r) { if (!n.setImmediate) { var o, i = 1, u = {}, c = !1, l = n.document, s = Object.getPrototypeOf && Object.getPrototypeOf(n); s = s && s.setTimeout ? s : n, {}.toString.call(n.process) === "[object process]" ? function () { o = function (_) { process.nextTick(function () { p(_) }) } }() : function () { if (n.postMessage && !n.importScripts) { var _ = !0, M = n.onmessage; return n.onmessage = function () { _ = !1 }, n.postMessage("", "*"), n.onmessage = M, _ } }() ? function () { var _ = "setImmediate$" + Math.random() + "$", M = function (k) { k.source === n && typeof k.data == "string" && k.data.indexOf(_) === 0 && p(+k.data.slice(_.length)) }; n.addEventListener ? n.addEventListener("message", M, !1) : n.attachEvent("onmessage", M), o = function (k) { n.postMessage(_ + k, "*") } }() : n.MessageChannel ? function () { var _ = new MessageChannel; _.port1.onmessage = function (M) { p(M.data) }, o = function (M) { _.port2.postMessage(M) } }() : l && "onreadystatechange" in l.createElement("script") ? function () { var _ = l.documentElement; o = function (M) { var k = l.createElement("script"); k.onreadystatechange = function () { p(M), k.onreadystatechange = null, _.removeChild(k), k = null }, _.appendChild(k) } }() : function () { o = function (_) { setTimeout(p, 0, _) } }(), s.setImmediate = function (_) { typeof _ != "function" && (_ = new Function("" + _)); for (var M = new Array(arguments.length - 1), k = 0; k < M.length; k++)M[k] = arguments[k + 1]; var S = { callback: _, args: M }; return u[i] = S, o(i), i++ }, s.clearImmediate = f } function f(y) { delete u[y] } function p(y) { if (c) setTimeout(p, 0, y); else { var _ = u[y]; if (_) { c = !0; try { (function (k) { var S = k.callback, d = k.args; switch (d.length) { case 0: S(); break; case 1: S(d[0]); break; case 2: S(d[0], d[1]); break; case 3: S(d[0], d[1], d[2]); break; default: S.apply(void 0, d) } })(_) } finally { f(y), c = !1 } } } } })(typeof self > "u" ? wr : self);/*! + * XRegExp 3.1.1-next + * + * Steven Levithan (c) 2007-2016 MIT License + */var Li = { astral: !1, natives: !1 }, Lt = { exec: RegExp.prototype.exec, test: RegExp.prototype.test, match: String.prototype.match, replace: String.prototype.replace, split: String.prototype.split }, Wr = {}, Zr = {}, Tr = {}, Fn = [], Si = { default: /\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|\(\?(?:[:=!]|<[=!])|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/, class: /\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|[\s\S]/ }, zi = /\$(?:{([\w$]+)}|(\d\d?|[\s\S]))/g, xi = Lt.exec.call(/()??/, "")[1] === void 0, Ai = /x/.flags !== void 0, $e = {}.toString; function Zn(n) { var r = !0; try { new RegExp("", n) } catch { r = !1 } return r && n === "y" ? new RegExp("aa|.", "y").test("b") : r } var oo = Zn("u"), Yn = Zn("y"), io = { g: !0, i: !0, m: !0, u: oo, y: Yn }; function ao(n, r, o, i, u) { var c; if (n.xregexp = { captureNames: r }, u) return n; if (n.__proto__) n.__proto__ = nt.prototype; else for (c in nt.prototype) n[c] = nt.prototype[c]; return n.xregexp.source = o, n.xregexp.flags = i && i.split("").sort().join(""), n } function Jr(n) { return Lt.replace.call(n, /([\s\S])(?=[\s\S]*\1)/g, "") } function Rr(n, r) { if (!nt.isRegExp(n)) throw new TypeError("Type RegExp expected"); var o = n.xregexp || {}, i = function (p) { return Ai ? p.flags : Lt.exec.call(/\/([a-z]*)$/i, RegExp.prototype.toString.call(p))[1] }(n), u = "", c = "", l = null, s = null; return (r = r || {}).removeG && (c += "g"), r.removeY && (c += "y"), c && (i = Lt.replace.call(i, new RegExp("[" + c + "]+", "g"), "")), r.addG && (u += "g"), r.addY && (u += "y"), u && (i = Jr(i + u)), r.isInternalOnly || (o.source !== void 0 && (l = o.source), o.flags != null && (s = u ? Jr(o.flags + u) : o.flags)), n = ao(new RegExp(r.source || n.source, i), function (p) { return !(!p.xregexp || !p.xregexp.captureNames) }(n) ? o.captureNames.slice(0) : null, l, s, r.isInternalOnly) } function Ue(n) { return parseInt(n, 16) } function Pe(n) { return parseInt(n, 10).toString(16) } function sn(n, r) { var o, i = n.length; for (o = 0; o < i; ++o)if (n[o] === r) return o; return -1 } function Be(n, r, o) { return Lt.test.call(o.indexOf("x") > -1 ? /^(?:\s|#[^#\n]*|\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/ : /^(?:\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/, n.slice(r)) } function qe(n) { for (; n.length < 4;)n = "0" + n; return n } function Fe(n) { if (!/^[\w$]$/.test(n)) throw new Error("Flag must be a single character A-Za-z0-9_$"); io[n] = !0 } function Ti(n, r, o, i, u) { for (var c, l, s = Fn.length, f = n.charAt(o), p = null; s--;)if (!((l = Fn[s]).leadChar && l.leadChar !== f || l.scope !== i && l.scope !== "all" || l.flag && r.indexOf(l.flag) === -1) && (c = nt.exec(n, l.regex, o, "sticky"))) { p = { matchLength: c[0].length, output: l.handler.call(u, c, i, r), reparse: l.reparse }; break } return p } function nt(n, r) { if (nt.isRegExp(n)) { if (r !== void 0) throw new TypeError("Cannot supply flags when copying a RegExp"); return Rr(n) } if (n = n === void 0 ? "" : String(n), r = r === void 0 ? "" : String(r), nt.isInstalled("astral") && r.indexOf("A") === -1 && (r += "A"), Tr[n] || (Tr[n] = {}), !Tr[n][r]) { for (var o, i = { hasNamedCapture: !1, captureNames: [] }, u = "default", c = "", l = 0, s = function (k, S) { var d; if (Jr(S) !== S) throw new SyntaxError("Invalid duplicate regex flag " + S); for (k = Lt.replace.call(k, /^\(\?([\w$]+)\)/, function (h, b) { if (Lt.test.call(/[gy]/, b)) throw new SyntaxError("Cannot use flag g or y in mode modifier " + h); return S = Jr(S + b), "" }), d = 0; d < S.length; ++d)if (!io[S.charAt(d)]) throw new SyntaxError("Unknown regex flag " + S.charAt(d)); return { pattern: k, flags: S } }(n, r), f = s.pattern, p = s.flags; l < f.length;) { do (o = Ti(f, p, l, u, i)) && o.reparse && (f = f.slice(0, l) + o.output + f.slice(l + o.matchLength)); while (o && o.reparse); if (o) c += o.output, l += o.matchLength || 1; else { var y = nt.exec(f, Si[u], l, "sticky")[0]; c += y, l += y.length, y === "[" && u === "default" ? u = "class" : y === "]" && u === "class" && (u = "default") } } Tr[n][r] = { pattern: Lt.replace.call(c, /(?:\(\?:\))+/g, "(?:)"), flags: Lt.replace.call(p, /[^gimuy]+/g, ""), captures: i.hasNamedCapture ? i.captureNames : null } } var _ = Tr[n][r]; return ao(new RegExp(_.pattern, _.flags), _.captures, n, r) } nt.prototype = new RegExp, nt.version = "3.1.1-next", nt._clipDuplicates = Jr, nt._hasNativeFlag = Zn, nt._dec = Ue, nt._hex = Pe, nt._pad4 = qe, nt.addToken = function (n, r, o) { var i, u = (o = o || {}).optionalFlags; if (o.flag && Fe(o.flag), u) for (u = Lt.split.call(u, ""), i = 0; i < u.length; ++i)Fe(u[i]); Fn.push({ regex: Rr(n, { addG: !0, addY: Yn, isInternalOnly: !0 }), handler: r, scope: o.scope || "default", flag: o.flag, reparse: o.reparse, leadChar: o.leadChar }), nt.cache.flush("patterns") }, nt.cache = function (n, r) { return Zr[n] || (Zr[n] = {}), Zr[n][r] || (Zr[n][r] = nt(n, r)) }, nt.cache.flush = function (n) { n === "patterns" ? Tr = {} : Zr = {} }, nt.exec = function (n, r, o, i) { var u, c, l, s = "g", f = !1; return (u = Yn && !!(i || r.sticky && i !== !1)) ? s += "y" : i && (f = !0, s += "FakeY"), r.xregexp = r.xregexp || {}, o = o || 0, (l = r.xregexp[s] || (r.xregexp[s] = Rr(r, { addG: !0, addY: u, source: f ? r.source + "|()" : void 0, removeY: i === !1, isInternalOnly: !0 }))).lastIndex = o, c = Wr.exec.call(l, n), f && c && c.pop() === "" && (c = null), r.global && (r.lastIndex = c ? l.lastIndex : 0), c }, nt.isInstalled = function (n) { return !!Li[n] }, nt.isRegExp = function (n) { return $e.call(n) === "[object RegExp]" }, nt.replace = function (n, r, o, i) { var u, c = nt.isRegExp(r), l = r.global && i !== "one" || i === "all", s = (l ? "g" : "") + (r.sticky ? "y" : "") || "noGY", f = r; return c ? (r.xregexp = r.xregexp || {}, f = r.xregexp[s] || (r.xregexp[s] = Rr(r, { addG: !!l, removeG: i === "one", isInternalOnly: !0 }))) : l && (f = new RegExp(nt.escape(String(r)), "g")), u = Wr.replace.call(function (y) { if (y == null) throw new TypeError("Cannot convert null or undefined to object"); return y }(n), f, o), c && r.global && (r.lastIndex = 0), u }, Wr.exec = function (n) { var r, o, i, u = this.lastIndex, c = Lt.exec.apply(this, arguments); if (c) { if (!xi && c.length > 1 && sn(c, "") > -1 && (o = Rr(this, { removeG: !0, isInternalOnly: !0 }), Lt.replace.call(String(n).slice(c.index), o, function () { var l, s = arguments.length; for (l = 1; l < s - 2; ++l)arguments[l] === void 0 && (c[l] = void 0) })), this.xregexp && this.xregexp.captureNames) for (i = 1; i < c.length; ++i)(r = this.xregexp.captureNames[i - 1]) && (c[r] = c[i]); this.global && !c[0].length && this.lastIndex > c.index && (this.lastIndex = c.index) } return this.global || (this.lastIndex = u), c }, Wr.replace = function (n, r) { var o, i, u, c = nt.isRegExp(n); return c ? (n.xregexp && (i = n.xregexp.captureNames), o = n.lastIndex) : n += "", u = function (s, f) { return $e.call(s) === "[object " + f + "]" }(r, "Function") ? Lt.replace.call(String(this), n, function () { var l, s = arguments; if (i) for (s[0] = new String(s[0]), l = 0; l < i.length; ++l)i[l] && (s[0][i[l]] = s[l + 1]); return c && n.global && (n.lastIndex = s[s.length - 2] + s[0].length), r.apply(void 0, s) }) : Lt.replace.call(this == null ? this : String(this), n, function () { var l = arguments; return Lt.replace.call(String(r), zi, function (s, f, p) { var y; if (f) { if ((y = +f) <= l.length - 3) return l[y] || ""; if ((y = i ? sn(i, f) : -1) < 0) throw new SyntaxError("Backreference to undefined group " + s); return l[y + 1] || "" } if (p === "$") return "$"; if (p === "&" || +p == 0) return l[0]; if (p === "`") return l[l.length - 1].slice(0, l[l.length - 2]); if (p === "'") return l[l.length - 1].slice(l[l.length - 2] + l[0].length); if (p = +p, !isNaN(p)) { if (p > l.length - 3) throw new SyntaxError("Backreference to undefined group " + s); return l[p] || "" } throw new SyntaxError("Invalid token " + s) }) }), c && (n.global ? n.lastIndex = 0 : n.lastIndex = o), u }, Wr.split = function (n, r) { if (!nt.isRegExp(n)) return Lt.split.apply(this, arguments); var o, i = String(this), u = [], c = n.lastIndex, l = 0; return r = (r === void 0 ? -1 : r) >>> 0, nt.forEach(i, n, function (s) { s.index + s[0].length > l && (u.push(i.slice(l, s.index)), s.length > 1 && s.index < i.length && Array.prototype.push.apply(u, s.slice(1)), o = s[0].length, l = s.index + o) }), l === i.length ? Lt.test.call(n, "") && !o || u.push("") : u.push(i.slice(l)), n.lastIndex = c, u.length > r ? u.slice(0, r) : u }, nt.addToken(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4}|{[\dA-Fa-f]+})|x(?![\dA-Fa-f]{2}))/, function (n, r) { if (n[1] === "B" && r === "default") return n[0]; throw new SyntaxError("Invalid escape " + n[0]) }, { scope: "all", leadChar: "\\" }), nt.addToken(/\\u{([\dA-Fa-f]+)}/, function (n, r, o) { var i = Ue(n[1]); if (i > 1114111) throw new SyntaxError("Invalid Unicode code point " + n[0]); if (i <= 65535) return "\\u" + qe(Pe(i)); if (oo && o.indexOf("u") > -1) return n[0]; throw new SyntaxError("Cannot use Unicode code point above \\u{FFFF} without flag u") }, { scope: "all", leadChar: "\\" }), nt.addToken(/\[(\^?)\]/, function (n) { return n[1] ? "[\\s\\S]" : "\\b\\B" }, { leadChar: "[" }), nt.addToken(/\(\?#[^)]*\)/, function (n, r, o) { return Be(n.input, n.index + n[0].length, o) ? "" : "(?:)" }, { leadChar: "(" }), nt.addToken(/\s+|#[^\n]*\n?/, function (n, r, o) { return Be(n.input, n.index + n[0].length, o) ? "" : "(?:)" }, { flag: "x" }), nt.addToken(/\./, function () { return "[\\s\\S]" }, { flag: "s", leadChar: "." }), nt.addToken(/\\k<([\w$]+)>/, function (n) { var r = isNaN(n[1]) ? sn(this.captureNames, n[1]) + 1 : +n[1], o = n.index + n[0].length; if (!r || r > this.captureNames.length) throw new SyntaxError("Backreference to undefined group " + n[0]); return "\\" + r + (o === n.input.length || isNaN(n.input.charAt(o)) ? "" : "(?:)") }, { leadChar: "\\" }), nt.addToken(/\\(\d+)/, function (n, r) { if (!(r === "default" && /^[1-9]/.test(n[1]) && +n[1] <= this.captureNames.length) && n[1] !== "0") throw new SyntaxError("Cannot use octal escape or backreference to undefined group " + n[0]); return n[0] }, { scope: "all", leadChar: "\\" }), nt.addToken(/\(\?P?<([\w$]+)>/, function (n) { if (!isNaN(n[1])) throw new SyntaxError("Cannot use integer as capture name " + n[0]); if (n[1] === "length" || n[1] === "__proto__") throw new SyntaxError("Cannot use reserved word as capture name " + n[0]); if (sn(this.captureNames, n[1]) > -1) throw new SyntaxError("Cannot use same name for multiple groups " + n[0]); return this.captureNames.push(n[1]), this.hasNamedCapture = !0, "(" }, { leadChar: "(" }), nt.addToken(/\((?!\?)/, function (n, r, o) { return o.indexOf("n") > -1 ? "(?:" : (this.captureNames.push(null), "(") }, { optionalFlags: "n", leadChar: "(" }); var Qn = nt;/*! + * XRegExp Unicode Base 3.1.1-next + * + * Steven Levithan (c) 2008-2016 MIT License + */(function (n) { var r = {}, o = n._dec, i = n._hex, u = n._pad4; function c(f) { return f.replace(/[- _]+/g, "").toLowerCase() } function l(f) { var p = /^\\[xu](.+)/.exec(f); return p ? o(p[1]) : f.charCodeAt(f.charAt(0) === "\\" ? 1 : 0) } function s(f) { return r[f]["b!"] || (r[f]["b!"] = function (y) { var _ = "", M = -1; return n.forEach(y, /(\\x..|\\u....|\\?[\s\S])(?:-(\\x..|\\u....|\\?[\s\S]))?/, function (k) { var S = l(k[1]); S > M + 1 && (_ += "\\u" + u(i(M + 1)), S > M + 2 && (_ += "-\\u" + u(i(S - 1)))), M = l(k[2] || k[1]) }), M < 65535 && (_ += "\\u" + u(i(M + 1)), M < 65534 && (_ += "-\\uFFFF")), _ }(r[f].bmp)) } n.addToken(/\\([pP])(?:{(\^?)([^}]*)}|([A-Za-z]))/, function (f, p, y) { var _ = f[1] === "P" || !!f[2], M = c(f[4] || f[3]), k = r[M]; if (f[1] === "P" && f[2]) throw new SyntaxError("Invalid double negation " + f[0]); if (!r.hasOwnProperty(M)) throw new SyntaxError("Unknown Unicode token " + f[0]); if (k.inverseOf) { if (M = c(k.inverseOf), !r.hasOwnProperty(M)) throw new ReferenceError("Unicode token missing data " + f[0] + " -> " + k.inverseOf); k = r[M], _ = !_ } if (!k.bmp) throw new SyntaxError("Astral mode required for Unicode token " + f[0]); return p === "class" ? _ ? s(M) : k.bmp : (_ ? "[^" : "[") + k.bmp + "]" }, { scope: "all", optionalFlags: "A", leadChar: "\\" }), n.addUnicodeData = function (f) { for (var p, y = 0; y < f.length; ++y) { if (!(p = f[y]).name) throw new Error("Unicode token requires name"); if (!(p.inverseOf || p.bmp || p.astral)) throw new Error("Unicode token has no character data " + p.name); r[c(p.name)] = p, p.alias && (r[c(p.alias)] = p) } n.cache.flush("patterns") }, n._getUnicodeProperty = function (f) { var p = c(f); return r[p] } })(Qn), function (n) { if (!n.addUnicodeData) throw new ReferenceError("Unicode Base must be loaded before Unicode Categories"); n.addUnicodeData([{ name: "L", alias: "Letter", bmp: "A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢄᢇ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿯ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞿꟂ-Ᶎꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭧꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ" }, { name: "N", alias: "Number", bmp: "0-9²³¹¼-¾٠-٩۰-۹߀-߉०-९০-৯৴-৹੦-੯૦-૯୦-୯୲-୷௦-௲౦-౯౸-౾೦-೯൘-൞൦-൸෦-෯๐-๙໐-໙༠-༳၀-၉႐-႙፩-፼ᛮ-ᛰ០-៩៰-៹᠐-᠙᥆-᥏᧐-᧚᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙⁰⁴-⁹₀-₉⅐-ↂↅ-↉①-⒛⓪-⓿❶-➓⳽〇〡-〩〸-〺㆒-㆕㈠-㈩㉈-㉏㉑-㉟㊀-㊉㊱-㊿꘠-꘩ꛦ-ꛯ꠰-꠵꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹0-9" }]) }(Qn); var Di = Qn, Ye = { exports: {} }; (function (n) { n.exports = function (r, o, i, u) { return (n = {}).dedupe = function (l, s) { var f, p = r(s); if (!o(l) && typeof l != "object") throw new Error("contains_dupes must be an array or object"); if (Object.keys(l).length === 0) return typeof console !== void 0 && console.warn("contains_dupes is empty"), []; p.limit && (typeof console !== void 0 && console.warn("options.limit will be ignored in dedupe"), p.limit = 0), p.cutoff && typeof p.cutoff == "number" || (typeof console !== void 0 && console.warn("Using default cutoff of 70"), p.cutoff = 70), p.scorer || (p.scorer = i, typeof console !== void 0 && console.log("Using default scorer 'ratio' for dedupe")), f = p.processor && typeof p.processor == "function" ? p.processor : function (h) { return h }; var y = {}; for (var _ in l) { var M = f(l[_]); if (typeof M != "string" && !(M instanceof String)) throw new Error("Each processed item in dedupe must be a string."); var k = u(M, l, p); p.returnObjects ? (k.length === 1 || (k = k.sort(function (h, b) { var I = f(h.choice), F = f(b.choice), B = I.length, U = F.length; return B === U ? I < F ? -1 : 1 : U - B })), p.keepmap ? y[f(k[0].choice)] = { item: k[0].choice, key: k[0].key, matches: k } : y[f(k[0].choice)] = { item: k[0].choice, key: k[0].key }) : (k.length === 1 || (k = k.sort(function (h, b) { var I = f(h[0]), F = f(b[0]), B = I.length, U = F.length; return B === U ? I < F ? -1 : 1 : U - B })), p.keepmap ? y[f(k[0][0])] = [k[0][0], k[0][2], k] : y[f(k[0][0])] = [k[0][0], k[0][2]]) } var S = []; for (var d in y) S.push(y[d]); return S }, n } })(Ye), function () { var n = ki, r = Ni, o = Pt.exports.intersection, i = Pt.exports.intersectionWith, u = Pt.exports.difference, c = Pt.exports.differenceWith, l = Pt.exports.uniq, s = Pt.exports.uniqWith, f = Pt.exports.partialRight, p = Pt.exports.forEach, y = Pt.exports.keys, _ = Pt.exports.isArray, M = Pt.exports.toArray, k = Pt.exports.orderBy, S = Ii, d = Ce, h = Oe, b = function (A, j, z) { var x = {}, v = Di, J = Ce, T = Oe; function rt(P) { return P.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") } function ut(P) { return (typeof P == "string" || P instanceof String) && P.length > 0 } x.validate = ut, x.process_and_sort = function ($) { return ut($) ? $.match(/\S+/g).sort().join(" ").trim() : "" }, x.tokenize = function ($, G) { if (G && G.wildcards && j && z) { var q = z(J, G, T); return j($.match(/\S+/g), function (W, ht) { return q(W, ht) === 0 }) } return A($.match(/\S+/g)) }; var H = v("[^\\pN|\\pL]", "g"); return x.full_process = function ($, G) { if (!($ instanceof String) && typeof $ != "string") return ""; var q; if (G && typeof G == "object" && G.wildcards && typeof G.wildcards == "string" && G.wildcards.length > 0) { var W = G.wildcards.toLowerCase(); if ($ = $.toLowerCase(), G.force_ascii) { var ht = "[^\0 -|" + rt(W) + "]"; $ = $.replace(new RegExp(ht, "g"), ""); var bt = "[" + rt(W) + "]", ct = W[0]; $ = $.replace(new RegExp(bt, "g"), ct); var tt = "[^A-Za-z0-9" + rt(W) + "]"; q = ($ = ($ = $.replace(new RegExp(tt, "g"), " ")).replace(/_/g, " ")).trim() } else { var mt = "[^\\pN|\\pL|" + rt(W) + "]", Yt = v(mt, "g"); $ = v.replace($, Yt, " ", "all"), bt = "[" + rt(W) + "]", ct = W[0], q = ($ = $.replace(new RegExp(bt, "g"), ct)).trim() } } else G && (G.force_ascii || G === !0) && (q = ($ = $.replace(/[^\x00-\x7F]/g, "")).replace(/\W|_/g, " ").toLowerCase().trim()), q = v.replace($, H, " ", "all").toLowerCase().trim(); return G && G.collapseWhitespace && (q = q.replace(/\s+/g, " ")), q }, x.clone_and_set_option_defaults = function (P) { if (P && P.isAClone) return P; var $ = { isAClone: !0 }; if (P) { var G, q = Object.keys(P); for (G = 0; G < q.length; G++)$[q[G]] = P[q[G]] } return $.full_process !== void 0 && $.full_process === !1 || ($.full_process = !0), $.force_ascii !== void 0 && $.force_ascii === !0 || ($.force_ascii = !1), $.normalize !== void 0 && $.normalize === !1 || ($.normalize = !0), $.astral !== void 0 && $.astral === !0 && ($.full_process = !1), $.collapseWhitespace !== void 0 && $.collapseWhitespace === !1 || ($.collapseWhitespace = !0), $ }, x.isCustomFunc = function (P) { return typeof P != "function" || P.name !== "token_set_ratio" && P.name !== "partial_token_set_ratio" && P.name !== "token_sort_ratio" && P.name !== "partial_token_sort_ratio" && P.name !== "QRatio" && P.name !== "WRatio" && P.name !== "distance" && P.name !== "partial_ratio" }, x }(l, s, f), I = b.validate, F = b.process_and_sort, B = b.tokenize, U = b.full_process, X = b.clone_and_set_option_defaults, lt = b.isCustomFunc, dt = Ye.exports(X, _, gt, sr).dedupe; function gt(A, j, z) { var x = X(z); return A = x.full_process ? U(A, x) : A, j = x.full_process ? U(j, x) : j, I(A) && I(j) ? Zt(A, j, x) : 0 } function wt(A, j, z) { var x = X(z); return A = x.full_process ? U(A, x) : A, j = x.full_process ? U(j, x) : j, I(A) && I(j) ? zt(A, j, x) : 0 } function jt(A, j, z) { var x = X(z); return A = x.full_process ? U(A, x) : A, j = x.full_process ? U(j, x) : j, I(A) && I(j) ? (x.partial = !0, zt(A, j, x)) : 0 } function Et(A, j, z) { var x = X(z); return A = x.full_process ? U(A, x) : A, j = x.full_process ? U(j, x) : j, I(A) && I(j) ? (x.proc_sorted || (A = F(A), j = F(j)), Zt(A, j, x)) : 0 } function Bt(A, j, z) { var x = X(z); return A = x.full_process ? U(A, x) : A, j = x.full_process ? U(j, x) : j, I(A) && I(j) ? (x.partial = !0, x.proc_sorted || (A = F(A), j = F(j)), Ot(A, j, x)) : 0 } function sr(A, j, z) { var x, v = X(z); if (_(j)) x = j.length; else { if (!(j instanceof Object)) throw new Error("Invalid choices"); x = y(j).length } if (!j || x === 0) return typeof console !== void 0 && console.warn("No choices"), []; if (v.processor && typeof v.processor != "function") throw new Error("Invalid Processor"); if (v.processor || (v.processor = function (tt) { return tt }), v.scorer && typeof v.scorer != "function") throw new Error("Invalid Scorer"); v.scorer || (v.scorer = gt); var J = lt(v.scorer); v.cutoff && typeof v.cutoff == "number" || (v.cutoff = -1); var T = function (tt, mt) { return tt }; v.full_process && (T = U, J || (v.processed = !0)); var rt = !1; J || (A = T(A, v), v.full_process = !1, v.astral && v.normalize && (v.normalize = !1, String.prototype.normalize ? (rt = !0, A = A.normalize()) : typeof console !== void 0 && console.warn("Normalization not supported in your environment")), A.length === 0 && typeof console !== void 0 && console.warn("Processed query is empty string")); var ut, H, P, $, G = [], q = !1, W = !1, ht = !1; if (v.scorer.name === "token_sort_ratio" || v.scorer.name === "partial_token_sort_ratio") { var bt = F(A); W = !0 } else if (v.scorer.name === "token_set_ratio" || v.scorer.name === "partial_token_set_ratio") { var ct = B(A, v); ht = !0 } return v.returnObjects ? (P = function (tt, mt) { return tt.score - mt.score }, $ = function (tt, mt) { return mt.score - tt.score }) : (P = function (tt, mt) { return tt[1] - mt[1] }, $ = function (tt, mt) { return mt[1] - tt[1] }), p(j, function (tt, mt) { v.tokens = void 0, v.proc_sorted = !1, W ? (v.proc_sorted = !0, tt && tt.proc_sorted ? H = tt.proc_sorted : (H = T(v.processor(tt), v), H = F(rt ? H.normalize() : H)), ut = v.scorer(bt, H, v)) : ht ? (H = "x", tt && tt.tokens ? (v.tokens = [ct, tt.tokens], v.trySimple && (H = T(v.processor(tt), v))) : (H = T(v.processor(tt), v), v.tokens = [ct, B(rt ? H.normalize() : H, v)]), ut = v.scorer(A, H, v)) : J ? (H = v.processor(tt), ut = v.scorer(A, H, v)) : (typeof (H = T(v.processor(tt), v)) == "string" && H.length !== 0 || (q = !0), rt && typeof H == "string" && (H = H.normalize()), ut = v.scorer(A, H, v)), ut > v.cutoff && (v.returnObjects ? G.push({ choice: tt, score: ut, key: mt }) : G.push([tt, ut, mt])) }), q && typeof console !== void 0 && console.log("One or more choices were empty. (post-processing if applied)"), v.limit && typeof v.limit == "number" && v.limit > 0 && v.limit < x && !v.unsorted ? G = r.nlargest(G, v.limit, P) : v.unsorted || (G = G.sort($)), G } function er(A, j, z, x) { var v, J, T = X(z); typeof z.abortController == "object" && (v = z.abortController), typeof z.cancelToken == "object" && (J = z.cancelToken); var rt = 256; typeof T.asyncLoopOffset == "number" && (rt = T.asyncLoopOffset < 1 ? 1 : T.asyncLoopOffset); var ut, H = !1; if (j && j.length && _(j)) ut = j.length, H = !0; else { if (!(j instanceof Object)) return void x(new Error("Invalid choices")); ut = Object.keys(j).length } if (!j || ut === 0) return typeof console !== void 0 && console.warn("No choices"), void x(null, []); if (T.processor && typeof T.processor != "function") x(new Error("Invalid Processor")); else if (T.processor || (T.processor = function (it) { return it }), T.scorer && typeof T.scorer != "function") x(new Error("Invalid Scorer")); else { T.scorer || (T.scorer = gt); var P = lt(T.scorer); T.cutoff && typeof T.cutoff == "number" || (T.cutoff = -1); var $ = function (it, kt) { return it }; T.full_process && ($ = U, P || (T.processed = !0)); var G = !1; P || (A = $(A, T), T.full_process = !1, T.astral && T.normalize && (T.normalize = !1, String.prototype.normalize ? (G = !0, A = A.normalize()) : typeof console !== void 0 && console.warn("Normalization not supported in your environment")), A.length === 0 && typeof console !== void 0 && console.warn("Processed query is empty string")); var q, W, ht, bt, ct, tt = [], mt = !1, Yt = !1, ir = !1; if (T.scorer.name === "token_sort_ratio" || T.scorer.name === "partial_token_sort_ratio") { var Jt = F(A); Yt = !0 } else if (T.scorer.name === "token_set_ratio" || T.scorer.name === "partial_token_set_ratio") { var Nr = B(A, T); ir = !0 } T.returnObjects ? (bt = function (it, kt) { return it.score - kt.score }, ct = function (it, kt) { return kt.score - it.score }) : (bt = function (it, kt) { return it[1] - kt[1] }, ct = function (it, kt) { return kt[1] - it[1] }); var dr = Object.keys(j); H ? fr(0) : fr(dr[0], 0) } function fr(it, kt) { (H || j.hasOwnProperty(it)) && (T.tokens = void 0, T.proc_sorted = !1, Yt ? (T.proc_sorted = !0, j[it] && j[it].proc_sorted ? W = j[it].proc_sorted : (W = $(T.processor(j[it]), T), W = F(G ? W.normalize() : W)), ht = T.scorer(Jt, W, T)) : ir ? (W = "x", j[it] && j[it].tokens ? (T.tokens = [Nr, j[it].tokens], T.trySimple && (W = $(T.processor(j[it]), T))) : (W = $(T.processor(j[it]), T), T.tokens = [Nr, B(G ? W.normalize() : W, T)]), ht = T.scorer(A, W, T)) : P ? (W = T.processor(j[it]), ht = T.scorer(A, W, T)) : (typeof (W = $(T.processor(j[it]), T)) == "string" && W.length !== 0 || (mt = !0), G && typeof W == "string" && (W = W.normalize()), ht = T.scorer(A, W, T)), q = H ? parseInt(it) : it, ht > T.cutoff && (T.returnObjects ? tt.push({ choice: j[it], score: ht, key: q }) : tt.push([j[it], ht, q]))), v && v.signal.aborted === !0 ? x(new Error("aborted")) : J && J.canceled === !0 ? x(new Error("canceled")) : H && it < j.length - 1 ? it % rt == 0 ? setImmediate(function () { fr(it + 1) }) : fr(it + 1) : kt < dr.length - 1 ? kt % rt == 0 ? setImmediate(function () { fr(dr[kt + 1], kt + 1) }) : fr(dr[kt + 1], kt + 1) : (mt && typeof console !== void 0 && console.log("One or more choices were empty. (post-processing if applied)"), T.limit && typeof T.limit == "number" && T.limit > 0 && T.limit < ut && !T.unsorted ? tt = r.nlargest(tt, T.limit, bt) : T.unsorted || (tt = tt.sort(ct)), x(null, tt)) } } var Ct = "%*SuperUniqueWildcardKey*%", Vt = !1; function qt(A, j) { var z = A; if (j.astral) { j.normalize && (String.prototype.normalize ? z = A.normalize() : Vt || (typeof console !== void 0 && console.warn("Normalization not supported in your environment"), Vt = !0)); var x = M(z) } else x = z.split(""); var v = {}; if (j.wildcards) for (var J = 0; J < x.length; J++) { var T = x[J]; j.wildcards.indexOf(T) > -1 ? v[Ct] ? v[Ct] += 1 : v[Ct] = 1 : v[T] ? v[T] += 1 : v[T] = 1 } else for (J = 0; J < x.length; J++)v[T = x[J]] ? v[T] += 1 : v[T] = 1; return v } function Gt(A, j, z) { for (var x = j, v = A.reduce(function (H, P) { return H[P] = qt(P, z), H }, {}), J = x.reduce(function (H, P) { return H[P] = qt(P, z), H }, {}), T = [], rt = 0; x.length && rt < A.length;) { var ut = k(x, function (H) { return P = v[A[rt]], $ = J[H], G = Object.keys(P), q = Object.keys($), W = o(G, q).map(function (ct) { return P[ct] * $[ct] }).reduce(function (ct, tt) { return ct + tt }, 0), ht = G.map(function (ct) { return Math.pow(P[ct], 2) }).reduce(function (ct, tt) { return ct + tt }, 0), bt = q.map(function (ct) { return Math.pow($[ct], 2) }).reduce(function (ct, tt) { return ct + tt }, 0), W / (Math.sqrt(ht) * Math.sqrt(bt)); var P, $, G, q, W, ht, bt }, "desc")[0]; T.push(ut), rt++, x = x.filter(function (H) { return H !== ut }) } return T.concat(x) } function gr(A, j, z, x) { var v = j, J = x; return (j.length > x.length || j.length === x.length && (A.length > z.length || [A, z].sort()[0] === z)) && (v = x, J = j), [v, J] } function or(A, j, z) { if (z.tokens) x = z.tokens[0], v = z.tokens[1]; else var x = B(A, z), v = B(j, z); var J = gr(A, x.sort(), j, v.sort()), T = J[0]; const rt = Gt(T, J[1], z); return z.partial ? Ot(T.join(" "), rt.join(" "), z) : Zt(T.join(" "), rt.join(" "), z) } function zt(A, j, z) { if (z.tokens) x = z.tokens[0], v = z.tokens[1]; else var x = B(A, z), v = B(j, z); if (z.wildcards) var J = f(d, z, h), T = function (Jt, Nr) { return J(Jt, Nr) === 0 }, rt = i(x, v, T), ut = c(x, v, T), H = c(v, x, T); else rt = o(x, v), ut = u(x, v), H = u(v, x); var P = rt.sort().join(" "), $ = ut.sort(), G = H.sort(); if (z.sortBySimilarity) var q = gr(A, $, j, G), W = q[0], ht = q[1], bt = W.join(" "), ct = Gt(W, ht, z).join(" "); else bt = $.join(" "), ct = G.join(" "); var tt = P + " " + bt, mt = P + " " + ct; P = P.trim(), tt = tt.trim(), mt = mt.trim(); var Yt = Zt; if (z.partial && (Yt = Ot, P.length > 0)) return 100; var ir = [Yt(P, tt, z), Yt(P, mt, z), Yt(tt, mt, z)]; return z.trySimple && ir.push(Yt(A, j, z)), Math.max.apply(null, ir) } var lr, pr, Wt, Ft, ur = !1; function Zt(A, j, z) { if (!I(A) || !I(j)) return 0; if (z.ratio_alg && z.ratio_alg === "difflib") { var x = new n(null, A, j).ratio(); return Math.round(100 * x) } var v, J; return z.subcost === void 0 && (z.subcost = 2), z.astral ? (z.normalize && (String.prototype.normalize ? (A = A.normalize(), j = j.normalize()) : ur || (typeof console !== void 0 && console.warn("Normalization not supported in your environment"), ur = !0)), v = S(A, j, z, M), J = M(A).length + M(j).length) : z.wildcards ? (v = d(A, j, z, h), J = A.length + j.length) : (v = h(A, j, z), J = A.length + j.length), Math.round((J - v) / J * 100) } function Ot(A, j, z) { if (!I(A) || !I(j)) return 0; if (A.length <= j.length) var x = A, v = j; else x = j, v = A; for (var J = new n(null, x, v).getMatchingBlocks(), T = [], rt = 0; rt < J.length; rt++) { var ut = J[rt][1] - J[rt][0] > 0 ? J[rt][1] - J[rt][0] : 0, H = ut + x.length, P = Zt(x, v.substring(ut, H), z); if (P > 99.5) return 100; T.push(P) } return Math.max.apply(null, T) } Object.keys || (Object.keys = (lr = Object.prototype.hasOwnProperty, pr = !{ toString: null }.propertyIsEnumerable("toString"), Ft = (Wt = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"]).length, function (A) { if (typeof A != "object" && (typeof A != "function" || A === null)) throw new TypeError("Object.keys called on non-object"); var j, z, x = []; for (j in A) lr.call(A, j) && x.push(j); if (pr) for (z = 0; z < Ft; z++)lr.call(A, Wt[z]) && x.push(Wt[z]); return x })); var $t = void 0; typeof Promise < "u" && ($t = function (A, j, z) { return new Promise(function (x, v) { er(A, j, z, function (J, T) { J ? v(J) : x(T) }) }) }); var cr = { distance: function (j, z, x) { var v = X(x); return j = v.full_process ? U(j, v) : j, z = v.full_process ? U(z, v) : z, v.subcost === void 0 && (v.subcost = 1), v.astral ? S(j, z, v, M) : d(j, z, v, h) }, ratio: gt, partial_ratio: function (j, z, x) { var v = X(x); return j = v.full_process ? U(j, v) : j, z = v.full_process ? U(z, v) : z, I(j) && I(z) ? Ot(j, z, v) : 0 }, token_set_ratio: wt, token_sort_ratio: Et, partial_token_set_ratio: jt, partial_token_sort_ratio: Bt, token_similarity_sort_ratio: function (j, z, x) { var v = X(x); return j = v.full_process ? U(j, v) : j, z = v.full_process ? U(z, v) : z, I(j) && I(z) ? or(j, z, v) : 0 }, partial_token_similarity_sort_ratio: function (j, z, x) { var v = X(x); return j = v.full_process ? U(j, v) : j, z = v.full_process ? U(z, v) : z, I(j) && I(z) ? (v.partial = !0, or(j, z, v)) : 0 }, WRatio: function (j, z, x) { var v = X(x); if (j = v.full_process ? U(j, v) : j, z = v.full_process ? U(z, v) : z, v.full_process = !1, !I(j) || !I(z)) return 0; var J = !0, T = .95, rt = .9, ut = Zt(j, z, v), H = Math.max(j.length, z.length) / Math.min(j.length, z.length); if (H < 1.5 && (J = !1), H > 8 && (rt = .6), J) { var P = Ot(j, z, v) * rt, $ = Bt(j, z, v) * T * rt, G = jt(j, z, v) * T * rt; return Math.round(Math.max(ut, P, $, G)) } var q = Et(j, z, v) * T, W = wt(j, z, v) * T; return Math.round(Math.max(ut, q, W)) }, full_process: U, extract: sr, extractAsync: er, extractAsPromised: $t, process_and_sort: F, unique_tokens: B, dedupe: dt }; no.exports = cr }(); var St = no.exports; St.distance; St.ratio; St.partial_ratio; St.token_set_ratio; St.token_sort_ratio; St.partial_token_set_ratio; St.partial_token_sort_ratio; St.token_similarity_sort_ratio; St.partial_token_similarity_sort_ratio; St.WRatio; St.full_process; const Ei = St.extract; St.extractAsync; St.extractAsPromised; St.process_and_sort; St.unique_tokens; St.dedupe; function Qe(n, r, o) { const i = n.slice(); return i[9] = r[o], i } function Ge(n) { let r, o = n[4].sort(), i = []; for (let u = 0; u < o.length; u += 1)i[u] = We(Qe(n, o, u)); return { c() { for (let u = 0; u < i.length; u += 1)i[u].c(); r = Ve() }, m(u, c) { for (let l = 0; l < i.length; l += 1)i[l] && i[l].m(u, c); pt(u, r, c) }, p(u, c) { if (c & 22) { o = u[4].sort(); let l; for (l = 0; l < o.length; l += 1) { const s = Qe(u, o, l); i[l] ? i[l].p(s, c) : (i[l] = We(s), i[l].c(), i[l].m(r.parentNode, r)) } for (; l < i.length; l += 1)i[l].d(1); i.length = o.length } }, d(u) { Xo(i, u), u && st(r) } } } function We(n) { let r, o, i = n[1](n[9].replaceAll("-", " ")) + "", u, c, l, s = n[2][n[9]] + "", f, p, y; return { c() { r = K("a"), o = K("h1"), u = ft(i), c = at(), l = K("h2"), f = ft(s), p = at(), Y(o, "class", "svelte-tubwpm"), Y(l, "class", "svelte-tubwpm"), Y(r, "id", "card"), Y(r, "href", y = "#" + n[9]), Y(r, "class", "svelte-tubwpm") }, m(_, M) { pt(_, r, M), C(r, o), C(o, u), C(r, c), C(r, l), C(l, f), C(r, p) }, p(_, M) { M & 18 && i !== (i = _[1](_[9].replaceAll("-", " ")) + "") && Ht(u, i), M & 20 && s !== (s = _[2][_[9]] + "") && Ht(f, s), M & 16 && y !== (y = "#" + _[9]) && Y(r, "href", y) }, d(_) { _ && st(r) } } } function Ci(n) { let r, o, i, u, c, l, s, f, p, y, _ = n[4] != null && Ge(n); return { c() { r = K("main"), o = K("div"), i = K("img"), c = at(), l = K("input"), s = at(), f = K("div"), _ && _.c(), Y(i, "title", "Back"), Y(i, "alt", "arrow"), Gn(i.src, u = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIGZpbGw9IiMwMDAwMDAiIHZlcnNpb249IjEuMSIgaWQ9IkNhcGFfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgDQoJIHdpZHRoPSI4MDBweCIgaGVpZ2h0PSI4MDBweCIgdmlld0JveD0iMCAwIDU1OC45NTcgNTU4Ljk1NyINCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8Zz4NCgkJPHBvbHlnb24gcG9pbnRzPSI0NjIuNzQ1LDAgOTYuMjEyLDI3OS40NzkgNDYyLjc0NSw1NTguOTU3IDQ2Mi43NDUsNDE5LjIyMSAyNzguNzEzLDI3OS40NzkgNDYyLjc0NSwxMzkuNzM4IAkJIi8+DQoJPC9nPg0KPC9nPg0KPC9zdmc+") || Y(i, "src", u), Y(i, "class", "svelte-tubwpm"), Y(l, "type", "text"), Y(l, "name", "search"), Y(l, "placeholder", "Search"), Y(l, "autocomplete", "off"), Y(l, "class", "svelte-tubwpm"), Y(o, "id", "search"), Y(o, "class", "svelte-tubwpm"), Y(f, "id", "cards"), Y(f, "class", "svelte-tubwpm"), Y(r, "class", "svelte-tubwpm") }, m(M, k) { pt(M, r, k), C(r, o), C(o, i), C(o, c), C(o, l), xe(l, n[3]), C(r, s), C(r, f), _ && _.m(f, null), p || (y = [pn(i, "click", n[5]), pn(l, "input", n[6])], p = !0) }, p(M, [k]) { k & 8 && l.value !== M[3] && xe(l, M[3]), M[4] != null ? _ ? _.p(M, k) : (_ = Ge(M), _.c(), _.m(f, null)) : _ && (_.d(1), _ = null) }, i: nr, o: nr, d(M) { M && st(r), _ && _.d(), p = !1, Cr(y) } } } function Oi(n, r, o) { let { search: i = !0 } = r, { prettify: u } = r, { packages: c } = r, l = Object.keys(c), s, f = "", p; setInterval(() => { if (s == f) return; if (f = s, f == null || f == "") { o(4, p = l); return } let M = Ei(s, l); o(4, p = []), M.forEach(k => { k[1] > 50 && p.push(k[0]) }) }, 1); const y = () => { o(0, i = !1) }; function _() { s = this.value, o(3, s) } return n.$$set = M => { "search" in M && o(0, i = M.search), "prettify" in M && o(1, u = M.prettify), "packages" in M && o(2, c = M.packages) }, [i, u, c, s, p, y, _] } class $i extends Ur { constructor(r) { super(), $r(this, r, Oi, Ci, Or, { search: 0, prettify: 1, packages: 2 }) } } function Ui(n) { let r, o; return r = new mi({ props: { pkginfo: n[1], prettify: n[6], sourcelink: "https://github.com/" + n[4] + "/tree/" + n[2] + (n[3] != null ? "/" + n[3] : "") } }), { c() { ar(r.$$.fragment) }, m(i, u) { tr(r, i, u), o = !0 }, p(i, u) { const c = {}; u & 2 && (c.pkginfo = i[1]), u & 28 && (c.sourcelink = "https://github.com/" + i[4] + "/tree/" + i[2] + (i[3] != null ? "/" + i[3] : "")), r.$set(c) }, i(i) { o || (At(r.$$.fragment, i), o = !0) }, o(i) { Dt(r.$$.fragment, i), o = !1 }, d(i) { rr(r, i) } } } function Pi(n) { let r, o; return r = new Mi({}), { c() { ar(r.$$.fragment) }, m(i, u) { tr(r, i, u), o = !0 }, p: nr, i(i) { o || (At(r.$$.fragment, i), o = !0) }, o(i) { Dt(r.$$.fragment, i), o = !1 }, d(i) { rr(r, i) } } } function Bi(n) { let r, o, i, u; const c = [Yi, Fi], l = []; function s(f, p) { return f[5] ? 0 : 1 } return r = s(n), o = l[r] = c[r](n), { c() { o.c(), i = Ve() }, m(f, p) { l[r].m(f, p), pt(f, i, p), u = !0 }, p(f, p) { let y = r; r = s(f), r === y ? l[r].p(f, p) : (Xe(), Dt(l[y], 1, 1, () => { l[y] = null }), to(), o = l[r], o ? o.p(f, p) : (o = l[r] = c[r](f), o.c()), At(o, 1), o.m(i.parentNode, i)) }, i(f) { u || (At(o), u = !0) }, o(f) { Dt(o), u = !1 }, d(f) { l[r].d(f), f && st(i) } } } function qi(n) { let r; return { c() { r = K("div") }, m(o, i) { pt(o, r, i) }, p: nr, i: nr, o: nr, d(o) { o && st(r) } } } function Fi(n) { let r, o, i; function u(l) { n[8](l) } let c = {}; return n[5] !== void 0 && (c.search = n[5]), r = new si({ props: c }), Vr.push(() => ro(r, "search", u)), { c() { ar(r.$$.fragment) }, m(l, s) { tr(r, l, s), i = !0 }, p(l, s) { const f = {}; !o && s & 32 && (o = !0, f.search = l[5], Je(() => o = !1)), r.$set(f) }, i(l) { i || (At(r.$$.fragment, l), i = !0) }, o(l) { Dt(r.$$.fragment, l), i = !1 }, d(l) { rr(r, l) } } } function Yi(n) { let r, o, i; function u(l) { n[7](l) } let c = { prettify: n[6], packages: n[0] }; return n[5] !== void 0 && (c.search = n[5]), r = new $i({ props: c }), Vr.push(() => ro(r, "search", u)), { c() { ar(r.$$.fragment) }, m(l, s) { tr(r, l, s), i = !0 }, p(l, s) { const f = {}; s & 1 && (f.packages = l[0]), !o && s & 32 && (o = !0, f.search = l[5], Je(() => o = !1)), r.$set(f) }, i(l) { i || (At(r.$$.fragment, l), i = !0) }, o(l) { Dt(r.$$.fragment, l), i = !1 }, d(l) { rr(r, l) } } } function Qi(n) { let r, o, i, u; const c = [qi, Bi, Pi, Ui], l = []; function s(f, p) { return f[1] == null ? 0 : f[1] == "main" ? 1 : f[1] == "404" ? 2 : 3 } return o = s(n), i = l[o] = c[o](n), { c() { r = K("main"), i.c() }, m(f, p) { pt(f, r, p), l[o].m(r, null), u = !0 }, p(f, [p]) { let y = o; o = s(f), o === y ? l[o].p(f, p) : (Xe(), Dt(l[y], 1, 1, () => { l[y] = null }), to(), i = l[o], i ? i.p(f, p) : (i = l[o] = c[o](f), i.c()), At(i, 1), i.m(r, null)) }, i(f) { u || (At(i), u = !0) }, o(f) { Dt(i), u = !1 }, d(f) { f && st(r), l[o].d() } } } function Gi(n, r, o) { let i, u = "", c, l, s, f, p = !1, y = k => { let S = "", d = !0; for (const h of k) d ? S += h.toUpperCase() : S += h, d = !1, [" ", "("].includes(h) && (d = !0); return S }; fetch("https://raw.githubusercontent.com/Modern-Modpacks/kjspkg/main/pkgs.json").then(k => { k.json().then(S => { o(0, i = S) }) }), setInterval(() => { if (window.location.hash) { if (i == null || u != null && u == window.location.hash.substring(1)) return; u = window.location.hash.substring(1), Object.keys(i).includes(u) ? (o(4, f = i[u].split("@")[0].split("$")[0]), o(2, l = i[u].includes("@") ? i[u].split("@").at(-1) : "main"), o(3, s = i[u].includes("$") ? i[u].split("@")[0].split("$").at(-1) : null), fetch(`https://raw.githubusercontent.com/${f}/${l}${s != null ? "/" + s : ""}/.kjspkg`).then(k => { k.json().then(S => { o(1, c = S) }) })) : o(1, c = "404") } else o(1, c = "main") }, 1); function _(k) { p = k, o(5, p) } function M(k) { p = k, o(5, p) } return [i, c, l, s, f, p, y, _, M] } class Wi extends Ur { constructor(r) { super(), $r(this, r, Gi, Qi, Or, {}) } } new Wi({ target: document.getElementById("app") }); \ No newline at end of file diff --git a/static/legacy/index.html b/static/legacy/index.html new file mode 100644 index 0000000..b7f649a --- /dev/null +++ b/static/legacy/index.html @@ -0,0 +1,47 @@ + + + + + + + [Legacy] KJSPKG Lookup + + + + + + + + + + + + + Please migrate to the new KJSPKG Lookup. Click me! + +
+ + diff --git a/tailwind.config.ts b/tailwind.config.ts index c616d8b..ace0a78 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -5,7 +5,10 @@ import { skeleton } from '@skeletonlabs/tw-plugin'; import { join } from 'path'; import type { Config } from 'tailwindcss'; -import { ThemeKJSPKG } from './src/themes/kjspkg'; +import { ThemeKjspkg } from './src/themes/kjspkg'; +import { ThemeKjspkgLighter } from './src/themes/kjspkg-lighter'; +import { ThemeKjspkgGcat } from './src/themes/kjspkg-gcat'; +import { ThemeSerenity } from './src/themes/serenity'; const config = { darkMode: 'class', @@ -21,7 +24,8 @@ const config = { typography, skeleton({ themes: { - custom: [ThemeKJSPKG] + custom: [ThemeKjspkg, ThemeKjspkgLighter, ThemeKjspkgGcat, ThemeSerenity], + preset: ['wintry', 'crimson'] } }) ] From b0a3a8ec378e33087c3758792ea0cdb707de76f1 Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Wed, 27 Dec 2023 00:50:43 +0100 Subject: [PATCH 09/25] :) --- src/routes/+page.svelte | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 3e46079..5a57977 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -20,5 +20,6 @@

Think something's missing? Please report it to us. For the time being, you can alternatively use - the old legacy lookup. + the old legacy lookup. Note that the legacy + lookup will be dropped in the future.

From df11f59a6bf1007d9e2b42539f47fb774017307d Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Wed, 27 Dec 2023 01:07:15 +0100 Subject: [PATCH 10/25] bai bai legacee --- src/routes/+page.svelte | 5 - static/legacy/.css | 306 --------------------------------------- static/legacy/.js | 33 ----- static/legacy/index.html | 47 ------ 4 files changed, 391 deletions(-) delete mode 100644 static/legacy/.css delete mode 100644 static/legacy/.js delete mode 100644 static/legacy/index.html diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 5a57977..18359c1 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -18,8 +18,3 @@ This website serves as a means to share KJSPKG packages more easily. Use the search bar above to search for packages, or browse all packages.

-

- Think something's missing? Please report it to us. For the time being, you can alternatively use - the old legacy lookup. Note that the legacy - lookup will be dropped in the future. -

diff --git a/static/legacy/.css b/static/legacy/.css deleted file mode 100644 index 4f1fb34..0000000 --- a/static/legacy/.css +++ /dev/null @@ -1,306 +0,0 @@ -b.svelte-1osdgb2 { - background-color: #00000073; - border-radius: 10px; - padding: 5px -} - -@media only screen and (max-width: 600px) { - b.svelte-1osdgb2 { - padding: 3px - } -} - -body { - margin: 0 -} - -h1.svelte-r035pw, -h2.svelte-r035pw { - margin-top: 0; - margin-bottom: 15px -} - -div.svelte-r035pw, -button.svelte-r035pw { - margin-bottom: 5vh -} - -#logo.svelte-r035pw { - height: 440px -} - -@media only screen and (max-width: 600px) { - #logo.svelte-r035pw { - height: 250px - } -} - -main.svelte-iqe5jf.svelte-iqe5jf { - display: grid; - height: 100vh -} - -#maininfo.svelte-iqe5jf.svelte-iqe5jf { - margin-top: 3vh -} - -#maininfo.svelte-iqe5jf>.svelte-iqe5jf { - margin-bottom: 0; - margin-top: 1.5vh -} - -#generalinfo.svelte-iqe5jf>.svelte-iqe5jf { - margin-block: 15px -} - -h1.svelte-iqe5jf.svelte-iqe5jf, -h2.svelte-iqe5jf.svelte-iqe5jf, -h3.svelte-iqe5jf.svelte-iqe5jf { - margin-inline: 20px -} - -h4.svelte-iqe5jf.svelte-iqe5jf { - align-self: flex-end -} - -.svelte-qs0vfb { - margin-bottom: 0 -} - -a.svelte-qs0vfb { - font-size: 1.5em; - font-weight: 700 -} - -#search.svelte-tubwpm.svelte-tubwpm { - display: flex; - flex-direction: row; - align-items: center; - margin-block: 2vh; - gap: 15px -} - -#search.svelte-tubwpm>img.svelte-tubwpm { - height: 35px; - width: 35px; - filter: invert(1); - transition: opacity .15s -} - -#search.svelte-tubwpm>input.svelte-tubwpm { - width: 90vw -} - -#search.svelte-tubwpm>img.svelte-tubwpm:hover { - opacity: .5; - cursor: pointer -} - -main.svelte-tubwpm.svelte-tubwpm { - display: flex; - flex-direction: column; - align-items: center -} - -#cards.svelte-tubwpm.svelte-tubwpm { - display: flex; - flex-direction: column; - align-items: center; - width: 100vw; - padding-inline: 30px; - box-sizing: border-box -} - -#card.svelte-tubwpm.svelte-tubwpm { - width: 100%; - margin-bottom: 20px; - background-color: var(--active-color); - border: 15px var(--fg-color) solid; - border-radius: 30px; - text-decoration: none; - color: var(--font-color); - transition: transform .5s -} - -#card.svelte-tubwpm.svelte-tubwpm:hover { - transform: scale(102%) -} - -#cards.svelte-tubwpm:hover #card.svelte-tubwpm:not(:hover) { - transform: scale(98%) -} - -#card.svelte-tubwpm>h1.svelte-tubwpm, -h2.svelte-tubwpm.svelte-tubwpm { - margin-block: 15px -} - -@media (prefers-reduced-motion) { - #card.svelte-tubwpm.svelte-tubwpm:hover { - transform: scale(1) - } - - #cards.svelte-tubwpm:hover #card.svelte-tubwpm:not(:hover) { - transform: scale(1) - } -} - -@media only screen and (max-width: 600px) { - #search.svelte-tubwpm>input.svelte-tubwpm { - width: 80vw - } -} - -:root { - --bg-color: #440b67; - --fg-color: #c37ee5; - --active-color: #6b10a3; - --font-color: #ffffff -} - -@font-face { - font-family: kubefont; - src: url(https://kubejs.com/Montserrat-Medium.ttf) -} - -body { - background-color: var(--bg-color); - color: var(--font-color); - font-family: kubefont, Courier New, Courier, monospace; - text-align: center; - display: flex; - flex-direction: column; - align-items: center; - -ms-overflow-style: none; - scrollbar-width: none -} - -body::-webkit-scrollbar { - display: none -} - -br, -img { - user-select: none -} - -h1 { - font-size: 3em -} - -h2 { - font-size: 1.5em -} - -h3 { - font-size: 1.35em -} - -h4 { - font-size: 1.1em -} - -p { - font-size: 1.25em -} - -a:not(#card) { - text-decoration: none; - color: var(--fg-color); - transition: opacity .1s -} - -a:not(#card):hover { - opacity: .5 -} - -button { - font-size: 2em; - padding: 10px; - cursor: pointer; - border-color: var(--fg-color); - border-width: 5px; - border-style: solid; - border-radius: 15px; - background-color: var(--bg-color); - transition: background-color .1s; - color: var(--font-color); - font-family: kubefont, Courier New, Courier, monospace; - font-weight: 700 -} - -button:hover { - background-color: var(--active-color) -} - -button:active { - background-color: var(--fg-color) -} - -input { - background-color: var(--active-color); - box-sizing: border-box; - padding: 10px; - height: 5vh; - border-radius: 15px; - border-color: var(--fg-color); - border-width: 5px; - border-style: solid; - color: var(--font-color) -} - -input, -input::placeholder { - font-family: kubefont, Courier New, Courier, monospace; - font-weight: 700; - font-size: 1.25em -} - -input::placeholder { - color: var(--fg-color) -} - -input:focus { - outline: none -} - -#icons { - display: flex; - justify-content: center; - column-gap: 25px -} - -#icons>a>img { - height: 30px; - filter: invert(1); - transition: filter .2s -} - -#icons>a>img:hover { - filter: invert(.7) -} - -@media only screen and (max-width: 600px) { - - h1, - button { - font-size: 1.7em - } - - h2, - input { - font-size: .7em - } - - h3 { - font-size: .6em - } - - h4 { - font-size: .5em - } - - p { - font-size: .65em - } -} \ No newline at end of file diff --git a/static/legacy/.js b/static/legacy/.js deleted file mode 100644 index 480da5f..0000000 --- a/static/legacy/.js +++ /dev/null @@ -1,33 +0,0 @@ -(function () { const r = document.createElement("link").relList; if (r && r.supports && r.supports("modulepreload")) return; for (const u of document.querySelectorAll('link[rel="modulepreload"]')) i(u); new MutationObserver(u => { for (const c of u) if (c.type === "childList") for (const l of c.addedNodes) l.tagName === "LINK" && l.rel === "modulepreload" && i(l) }).observe(document, { childList: !0, subtree: !0 }); function o(u) { const c = {}; return u.integrity && (c.integrity = u.integrity), u.referrerPolicy && (c.referrerPolicy = u.referrerPolicy), u.crossOrigin === "use-credentials" ? c.credentials = "include" : u.crossOrigin === "anonymous" ? c.credentials = "omit" : c.credentials = "same-origin", c } function i(u) { if (u.ep) return; u.ep = !0; const c = o(u); fetch(u.href, c) } })(); function nr() { } function Zo(n, r) { for (const o in r) n[o] = r[o]; return n } function Ze(n) { return n() } function ze() { return Object.create(null) } function Cr(n) { n.forEach(Ze) } function Re(n) { return typeof n == "function" } function Or(n, r) { return n != n ? r == r : n !== r || n && typeof n == "object" || typeof n == "function" } let cn; function Gn(n, r) { return cn || (cn = document.createElement("a")), cn.href = r, n === cn.href } function Ro(n) { return Object.keys(n).length === 0 } function Ho(n, r, o, i) { if (n) { const u = He(n, r, o, i); return n[0](u) } } function He(n, r, o, i) { return n[1] && i ? Zo(o.ctx.slice(), n[1](i(r))) : o.ctx } function Vo(n, r, o, i) { if (n[2] && i) { const u = n[2](i(o)); if (r.dirty === void 0) return u; if (typeof u == "object") { const c = [], l = Math.max(r.dirty.length, u.length); for (let s = 0; s < l; s += 1)c[s] = r.dirty[s] | u[s]; return c } return r.dirty | u } return r.dirty } function Jo(n, r, o, i, u, c) { if (u) { const l = He(r, o, i, c); n.p(l, u) } } function Ko(n) { if (n.ctx.length > 32) { const r = [], o = n.ctx.length / 32; for (let i = 0; i < o; i++)r[i] = -1; return r } return -1 } function C(n, r) { n.appendChild(r) } function pt(n, r, o) { n.insertBefore(r, o || null) } function st(n) { n.parentNode && n.parentNode.removeChild(n) } function Xo(n, r) { for (let o = 0; o < n.length; o += 1)n[o] && n[o].d(r) } function K(n) { return document.createElement(n) } function ft(n) { return document.createTextNode(n) } function at() { return ft(" ") } function Ve() { return ft("") } function pn(n, r, o, i) { return n.addEventListener(r, o, i), () => n.removeEventListener(r, o, i) } function Y(n, r, o) { o == null ? n.removeAttribute(r) : n.getAttribute(r) !== o && n.setAttribute(r, o) } function ti(n) { return Array.from(n.childNodes) } function Ht(n, r) { r = "" + r, n.data !== r && (n.data = r) } function xe(n, r) { n.value = r ?? "" } let Wn; function Hr(n) { Wn = n } const xr = [], Vr = []; let Er = []; const On = [], ri = Promise.resolve(); let $n = !1; function ni() { $n || ($n = !0, ri.then(Ke)) } function Un(n) { Er.push(n) } function Je(n) { On.push(n) } const Tn = new Set; let zr = 0; function Ke() { if (zr !== 0) return; const n = Wn; do { try { for (; zr < xr.length;) { const r = xr[zr]; zr++, Hr(r), ei(r.$$) } } catch (r) { throw xr.length = 0, zr = 0, r } for (Hr(null), xr.length = 0, zr = 0; Vr.length;)Vr.pop()(); for (let r = 0; r < Er.length; r += 1) { const o = Er[r]; Tn.has(o) || (Tn.add(o), o()) } Er.length = 0 } while (xr.length); for (; On.length;)On.pop()(); $n = !1, Tn.clear(), Hr(n) } function ei(n) { if (n.fragment !== null) { n.update(), Cr(n.before_update); const r = n.dirty; n.dirty = [-1], n.fragment && n.fragment.p(n.ctx, r), n.after_update.forEach(Un) } } function oi(n) { const r = [], o = []; Er.forEach(i => n.indexOf(i) === -1 ? r.push(i) : o.push(i)), o.forEach(i => i()), Er = r } const gn = new Set; let kr; function Xe() { kr = { r: 0, c: [], p: kr } } function to() { kr.r || Cr(kr.c), kr = kr.p } function At(n, r) { n && n.i && (gn.delete(n), n.i(r)) } function Dt(n, r, o, i) { if (n && n.o) { if (gn.has(n)) return; gn.add(n), kr.c.push(() => { gn.delete(n), i && (o && n.d(1), i()) }), n.o(r) } else i && i() } function ro(n, r, o) { const i = n.$$.props[r]; i !== void 0 && (n.$$.bound[i] = o, o(n.$$.ctx[i])) } function ar(n) { n && n.c() } function tr(n, r, o, i) { const { fragment: u, after_update: c } = n.$$; u && u.m(r, o), i || Un(() => { const l = n.$$.on_mount.map(Ze).filter(Re); n.$$.on_destroy ? n.$$.on_destroy.push(...l) : Cr(l), n.$$.on_mount = [] }), c.forEach(Un) } function rr(n, r) { const o = n.$$; o.fragment !== null && (oi(o.after_update), Cr(o.on_destroy), o.fragment && o.fragment.d(r), o.on_destroy = o.fragment = null, o.ctx = []) } function ii(n, r) { n.$$.dirty[0] === -1 && (xr.push(n), ni(), n.$$.dirty.fill(0)), n.$$.dirty[r / 31 | 0] |= 1 << r % 31 } function $r(n, r, o, i, u, c, l, s = [-1]) { const f = Wn; Hr(n); const p = n.$$ = { fragment: null, ctx: [], props: c, update: nr, not_equal: u, bound: ze(), on_mount: [], on_destroy: [], on_disconnect: [], before_update: [], after_update: [], context: new Map(r.context || (f ? f.$$.context : [])), callbacks: ze(), dirty: s, skip_bound: !1, root: r.target || f.$$.root }; l && l(p.root); let y = !1; if (p.ctx = o ? o(n, r.props || {}, (_, M, ...k) => { const S = k.length ? k[0] : M; return p.ctx && u(p.ctx[_], p.ctx[_] = S) && (!p.skip_bound && p.bound[_] && p.bound[_](S), y && ii(n, _)), M }) : [], p.update(), y = !0, Cr(p.before_update), p.fragment = i ? i(p.ctx) : !1, r.target) { if (r.hydrate) { const _ = ti(r.target); p.fragment && p.fragment.l(_), _.forEach(st) } else p.fragment && p.fragment.c(); r.intro && At(n.$$.fragment), tr(n, r.target, r.anchor, r.customElement), Ke() } Hr(f) } class Ur { $destroy() { rr(this, 1), this.$destroy = nr } $on(r, o) { if (!Re(o)) return nr; const i = this.$$.callbacks[r] || (this.$$.callbacks[r] = []); return i.push(o), () => { const u = i.indexOf(o); u !== -1 && i.splice(u, 1) } } $set(r) { this.$$set && !Ro(r) && (this.$$.skip_bound = !0, this.$$set(r), this.$$.skip_bound = !1) } } function ai(n) { let r, o, i, u; const c = n[2].default, l = Ho(c, n, n[1], null); return { c() { r = K("b"), l && l.c(), Y(r, "title", "Click to copy"), Y(r, "class", "svelte-1osdgb2") }, m(s, f) { pt(s, r, f), l && l.m(r, null), n[3](r), o = !0, i || (u = pn(r, "mousedown", n[4]), i = !0) }, p(s, [f]) { l && l.p && (!o || f & 2) && Jo(l, c, s, s[1], o ? Vo(c, s[1], f, null) : Ko(s[1]), null) }, i(s) { o || (At(l, s), o = !0) }, o(s) { Dt(l, s), o = !1 }, d(s) { s && st(r), l && l.d(s), n[3](null), i = !1, u() } } } function li(n, r, o) { let { $$slots: i = {}, $$scope: u } = r, c; function l(f) { Vr[f ? "unshift" : "push"](() => { c = f, o(0, c) }) } const s = () => { navigator.clipboard.writeText(c == null ? void 0 : c.innerText) }; return n.$$set = f => { "$$scope" in f && o(1, u = f.$$scope) }, [c, u, i, l, s] } class Dr extends Ur { constructor(r) { super(), $r(this, r, li, ai, Or, {}) } } function ui(n) { let r = window.location.origin + "", o, i; return { c() { o = ft(r), i = ft("/#[package-name]") }, m(u, c) { pt(u, o, c), pt(u, i, c) }, p: nr, d(u) { u && st(o), u && st(i) } } } function ci(n) { - let r, o, i, u, c, l, s, f, p, y, _, M, k, S, d, h, b, I, F, B, U, X, lt, dt, gt, wt; return I = new Dr({ props: { $$slots: { default: [ui] }, $$scope: { ctx: n } } }), { - c() { - r = K("main"), o = K("img"), u = at(), c = K("div"), c.innerHTML = `

KJSPKG LOOKUP

-

Show other people the packages you love!

`, l = at(), s = K("div"), f = K("p"), p = ft(`This website serves as a means to share KJSPKG packages more easily. - `), y = K("br"), _ = at(), M = K("br"), k = ft(` - Don't know what KJSPKG is? Click the GitHub logo at the bottom of the page - `), S = K("br"), d = at(), h = K("br"), b = ft(` - To link a package, simply do: `), ar(I.$$.fragment), F = ft("!"), B = at(), U = K("button"), U.textContent = "See all packages", X = at(), lt = K("div"), lt.innerHTML = `github - site`, Y(o, "id", "logo"), Gn(o.src, i = "https://raw.githubusercontent.com/Modern-Modpacks/assets/main/Icons/Other/kjspkg.png") || Y(o, "src", i), Y(o, "alt", "logo"), Y(o, "class", "svelte-r035pw"), Y(c, "class", "svelte-r035pw"), Y(s, "class", "svelte-r035pw"), Y(U, "class", "svelte-r035pw"), Y(lt, "id", "icons"), Y(lt, "class", "svelte-r035pw") - }, m(jt, Et) { pt(jt, r, Et), C(r, o), C(r, u), C(r, c), C(r, l), C(r, s), C(s, f), C(f, p), C(f, y), C(f, _), C(f, M), C(f, k), C(f, S), C(f, d), C(f, h), C(f, b), tr(I, f, null), C(f, F), C(r, B), C(r, U), C(r, X), C(r, lt), dt = !0, gt || (wt = pn(U, "click", n[1]), gt = !0) }, p(jt, [Et]) { const Bt = {}; Et & 4 && (Bt.$$scope = { dirty: Et, ctx: jt }), I.$set(Bt) }, i(jt) { dt || (At(I.$$.fragment, jt), dt = !0) }, o(jt) { Dt(I.$$.fragment, jt), dt = !1 }, d(jt) { jt && st(r), rr(I), gt = !1, wt() } - } -} function fi(n, r, o) { let { search: i = !1 } = r; const u = () => { o(0, i = !0) }; return n.$$set = c => { "search" in c && o(0, i = c.search) }, [i, u] } class si extends Ur { constructor(r) { super(), $r(this, r, fi, ci, Or, { search: 0 }) } } function Ae(n) { let r; return { c() { r = K("br"), Y(r, "class", "svelte-iqe5jf") }, m(o, i) { pt(o, r, i) }, d(o) { o && st(r) } } } function Te(n) { let r, o, i, u = n[7](n[0].dependencies) + "", c; return { c() { r = K("h3"), r.textContent = "Dependencies:", o = at(), i = K("p"), c = ft(u), Y(r, "class", "svelte-iqe5jf"), Y(i, "class", "svelte-iqe5jf") }, m(l, s) { pt(l, r, s), pt(l, o, s), pt(l, i, s), C(i, c) }, p(l, s) { s & 1 && u !== (u = l[7](l[0].dependencies) + "") && Ht(c, u) }, d(l) { l && st(r), l && st(o), l && st(i) } } } function De(n) { let r, o, i, u = n[7](n[0].incompatibilities) + "", c; return { c() { r = K("h3"), r.textContent = "Incompatibilities:", o = at(), i = K("p"), c = ft(u), Y(r, "class", "svelte-iqe5jf"), Y(i, "class", "svelte-iqe5jf") }, m(l, s) { pt(l, r, s), pt(l, o, s), pt(l, i, s), C(i, c) }, p(l, s) { s & 1 && u !== (u = l[7](l[0].incompatibilities) + "") && Ht(c, u) }, d(l) { l && st(r), l && st(o), l && st(i) } } } function gi(n) { let r, o; return { c() { r = ft("kjspkg install "), o = ft(n[3]) }, m(i, u) { pt(i, r, u), pt(i, o, u) }, p(i, u) { u & 8 && Ht(o, i[3]) }, d(i) { i && st(r), i && st(o) } } } function pi(n) { let r, o; return { c() { r = ft("kjspkg remove "), o = ft(n[3]) }, m(i, u) { pt(i, r, u), pt(i, o, u) }, p(i, u) { u & 8 && Ht(o, i[3]) }, d(i) { i && st(r), i && st(o) } } } function di(n) { let r, o; return { c() { r = ft("kjspkg update "), o = ft(n[3]) }, m(i, u) { pt(i, r, u), pt(i, o, u) }, p(i, u) { u & 8 && Ht(o, i[3]) }, d(i) { i && st(r), i && st(o) } } } function hi(n) { let r, o; return { c() { r = ft("kjspkg pkg "), o = ft(n[3]) }, m(i, u) { pt(i, r, u), pt(i, o, u) }, p(i, u) { u & 8 && Ht(o, i[3]) }, d(i) { i && st(r), i && st(o) } } } function yi(n) { let r, o, i, u, c, l = (n[3] ? n[2](n[3].replaceAll("-", " ")) : null) + "", s, f, p, y = n[6](n[0].description) + "", _, M, k, S = n[0].author + "", d, h, b, I, F, B, U, X, lt, dt, gt, wt, jt, Et, Bt, sr, er, Ct, Vt, qt, Gt, gr, or, zt, lr, pr, Wt, Ft, ur, Zt, Ot, $t, cr, A, j, z, x, v, J, T, rt, ut, H; document.title = r = n[3] ? n[2](n[3].replaceAll("-", " ")) : null; let P = (n[0].dependencies.length || n[0].incompatibilities.length) && Ae(), $ = n[0].dependencies.length && Te(n), G = n[0].incompatibilities.length && De(n); return qt = new Dr({ props: { $$slots: { default: [gi] }, $$scope: { ctx: n } } }), zt = new Dr({ props: { $$slots: { default: [pi] }, $$scope: { ctx: n } } }), Ft = new Dr({ props: { $$slots: { default: [di] }, $$scope: { ctx: n } } }), $t = new Dr({ props: { $$slots: { default: [hi] }, $$scope: { ctx: n } } }), { c() { o = at(), i = K("main"), u = K("div"), c = K("h1"), s = ft(l), f = at(), p = K("h2"), _ = at(), M = K("h3"), k = ft("By "), d = ft(S), h = at(), b = K("div"), I = K("h3"), I.textContent = "Available for:", F = at(), B = K("p"), U = ft(n[4]), X = at(), lt = K("p"), dt = ft(n[5]), gt = at(), P && P.c(), wt = at(), $ && $.c(), jt = at(), G && G.c(), Et = at(), Bt = K("br"), sr = at(), er = K("h3"), er.textContent = "Commands:", Ct = at(), Vt = K("p"), ar(qt.$$.fragment), Gt = ft(" to install"), gr = at(), or = K("p"), ar(zt.$$.fragment), lr = ft(" to remove"), pr = at(), Wt = K("p"), ar(Ft.$$.fragment), ur = ft(" to update"), Zt = at(), Ot = K("p"), ar($t.$$.fragment), cr = ft(" to see more info"), A = at(), j = K("br"), z = at(), x = K("div"), v = K("a"), J = K("img"), rt = at(), ut = K("h4"), ut.innerHTML = 'Confused about what this is? Checkout the main page', Y(c, "class", "svelte-iqe5jf"), Y(p, "class", "svelte-iqe5jf"), Y(M, "class", "svelte-iqe5jf"), Y(u, "id", "maininfo"), Y(u, "class", "svelte-iqe5jf"), Y(I, "class", "svelte-iqe5jf"), Y(B, "class", "svelte-iqe5jf"), Y(lt, "class", "svelte-iqe5jf"), Y(Bt, "class", "svelte-iqe5jf"), Y(er, "class", "svelte-iqe5jf"), Y(Vt, "class", "svelte-iqe5jf"), Y(or, "class", "svelte-iqe5jf"), Y(Wt, "class", "svelte-iqe5jf"), Y(Ot, "class", "svelte-iqe5jf"), Y(j, "class", "svelte-iqe5jf"), Y(J, "id", "logo"), Y(J, "title", "Source code"), Gn(J.src, T = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgMGMtNi42MjYgMC0xMiA1LjM3My0xMiAxMiAwIDUuMzAyIDMuNDM4IDkuOCA4LjIwNyAxMS4zODcuNTk5LjExMS43OTMtLjI2MS43OTMtLjU3N3YtMi4yMzRjLTMuMzM4LjcyNi00LjAzMy0xLjQxNi00LjAzMy0xLjQxNi0uNTQ2LTEuMzg3LTEuMzMzLTEuNzU2LTEuMzMzLTEuNzU2LTEuMDg5LS43NDUuMDgzLS43MjkuMDgzLS43MjkgMS4yMDUuMDg0IDEuODM5IDEuMjM3IDEuODM5IDEuMjM3IDEuMDcgMS44MzQgMi44MDcgMS4zMDQgMy40OTIuOTk3LjEwNy0uNzc1LjQxOC0xLjMwNS43NjItMS42MDQtMi42NjUtLjMwNS01LjQ2Ny0xLjMzNC01LjQ2Ny01LjkzMSAwLTEuMzExLjQ2OS0yLjM4MSAxLjIzNi0zLjIyMS0uMTI0LS4zMDMtLjUzNS0xLjUyNC4xMTctMy4xNzYgMCAwIDEuMDA4LS4zMjIgMy4zMDEgMS4yMy45NTctLjI2NiAxLjk4My0uMzk5IDMuMDAzLS40MDQgMS4wMi4wMDUgMi4wNDcuMTM4IDMuMDA2LjQwNCAyLjI5MS0xLjU1MiAzLjI5Ny0xLjIzIDMuMjk3LTEuMjMuNjUzIDEuNjUzLjI0MiAyLjg3NC4xMTggMy4xNzYuNzcuODQgMS4yMzUgMS45MTEgMS4yMzUgMy4yMjEgMCA0LjYwOS0yLjgwNyA1LjYyNC01LjQ3OSA1LjkyMS40My4zNzIuODIzIDEuMTAyLjgyMyAyLjIyMnYzLjI5M2MwIC4zMTkuMTkyLjY5NC44MDEuNTc2IDQuNzY1LTEuNTg5IDguMTk5LTYuMDg2IDguMTk5LTExLjM4NiAwLTYuNjI3LTUuMzczLTEyLTEyLTEyeiIvPjwvc3ZnPg==") || Y(J, "src", T), Y(J, "alt", "github"), Y(v, "href", n[1]), Y(x, "id", "icons"), Y(x, "class", "svelte-iqe5jf"), Y(b, "id", "generalinfo"), Y(b, "class", "svelte-iqe5jf"), Y(ut, "class", "svelte-iqe5jf"), Y(i, "class", "svelte-iqe5jf") }, m(q, W) { pt(q, o, W), pt(q, i, W), C(i, u), C(u, c), C(c, s), C(u, f), C(u, p), p.innerHTML = y, C(u, _), C(u, M), C(M, k), C(M, d), C(i, h), C(i, b), C(b, I), C(b, F), C(b, B), C(B, U), C(b, X), C(b, lt), C(lt, dt), C(b, gt), P && P.m(b, null), C(b, wt), $ && $.m(b, null), C(b, jt), G && G.m(b, null), C(b, Et), C(b, Bt), C(b, sr), C(b, er), C(b, Ct), C(b, Vt), tr(qt, Vt, null), C(Vt, Gt), C(b, gr), C(b, or), tr(zt, or, null), C(or, lr), C(b, pr), C(b, Wt), tr(Ft, Wt, null), C(Wt, ur), C(b, Zt), C(b, Ot), tr($t, Ot, null), C(Ot, cr), C(b, A), C(b, j), C(b, z), C(b, x), C(x, v), C(v, J), C(i, rt), C(i, ut), H = !0 }, p(q, [W]) { (!H || W & 12) && r !== (r = q[3] ? q[2](q[3].replaceAll("-", " ")) : null) && (document.title = r), (!H || W & 12) && l !== (l = (q[3] ? q[2](q[3].replaceAll("-", " ")) : null) + "") && Ht(s, l), (!H || W & 1) && y !== (y = q[6](q[0].description) + "") && (p.innerHTML = y), (!H || W & 1) && S !== (S = q[0].author + "") && Ht(d, S), (!H || W & 16) && Ht(U, q[4]), (!H || W & 32) && Ht(dt, q[5]), q[0].dependencies.length || q[0].incompatibilities.length ? P || (P = Ae(), P.c(), P.m(b, wt)) : P && (P.d(1), P = null), q[0].dependencies.length ? $ ? $.p(q, W) : ($ = Te(q), $.c(), $.m(b, jt)) : $ && ($.d(1), $ = null), q[0].incompatibilities.length ? G ? G.p(q, W) : (G = De(q), G.c(), G.m(b, Et)) : G && (G.d(1), G = null); const ht = {}; W & 1032 && (ht.$$scope = { dirty: W, ctx: q }), qt.$set(ht); const bt = {}; W & 1032 && (bt.$$scope = { dirty: W, ctx: q }), zt.$set(bt); const ct = {}; W & 1032 && (ct.$$scope = { dirty: W, ctx: q }), Ft.$set(ct); const tt = {}; W & 1032 && (tt.$$scope = { dirty: W, ctx: q }), $t.$set(tt), (!H || W & 2) && Y(v, "href", q[1]) }, i(q) { H || (At(qt.$$.fragment, q), At(zt.$$.fragment, q), At(Ft.$$.fragment, q), At($t.$$.fragment, q), H = !0) }, o(q) { Dt(qt.$$.fragment, q), Dt(zt.$$.fragment, q), Dt(Ft.$$.fragment, q), Dt($t.$$.fragment, q), H = !1 }, d(q) { q && st(o), q && st(i), P && P.d(), $ && $.d(), G && G.d(), rr(qt), rr(zt), rr(Ft), rr($t) } } } function _i(n, r, o) { let { pkginfo: i } = r, { sourcelink: u } = r, c, l, s; setInterval(() => { o(3, c = window.location.hash.substring(1)), o(4, l = y()), o(5, s = _()) }, 1); let { prettify: f } = r, p = k => { let S = []; return k.split(" ").forEach(d => { d.startsWith("http://") || d.startsWith("https://") ? S.push(`${d}`) : S.push(d) }), S.join(" ") }, y = () => { let k = []; return i.versions.forEach(S => { k.push("1." + (10 + S)) }), k.join(", ") }, _ = () => { let k = []; return i.modloaders.forEach(S => { k.push(f(S)) }), k.join(", ") }, M = k => { let S = []; return k.forEach(d => { d.includes(":") ? S.push(f(`${d.split(":").at(-1).replaceAll("-", " ").replaceAll("_", " ")} (${d.split(":")[0]})`)) : S.push(f(d.replaceAll("-", " ").replaceAll("_", " "))) }), S.join(", ") }; return n.$$set = k => { "pkginfo" in k && o(0, i = k.pkginfo), "sourcelink" in k && o(1, u = k.sourcelink), "prettify" in k && o(2, f = k.prettify) }, [i, u, f, c, l, s, p, M] } class mi extends Ur { constructor(r) { super(), $r(this, r, _i, yi, Or, { pkginfo: 0, sourcelink: 1, prettify: 2 }) } } function vi(n) { let r = window.location.hash.substring(1) + "", o; return { c() { o = ft(r) }, m(i, u) { pt(i, o, u) }, p: nr, d(i) { i && st(o) } } } function bi(n) { let r, o, i, u, c, l, s, f, p, y, _, M, k, S, d; return s = new Dr({ props: { $$slots: { default: [vi] }, $$scope: { ctx: n } } }), { c() { r = at(), o = K("main"), i = K("h1"), i.textContent = "Whoops, something has gone wrong!", u = at(), c = K("h2"), l = ft("The package "), ar(s.$$.fragment), f = ft(" was not found"), p = at(), y = K("br"), _ = at(), M = K("br"), k = at(), S = K("a"), S.textContent = "Go back", document.title = "Package not found", Y(i, "class", "svelte-qs0vfb"), Y(c, "class", "svelte-qs0vfb"), Y(y, "class", "svelte-qs0vfb"), Y(M, "class", "svelte-qs0vfb"), Y(S, "href", "/"), Y(S, "class", "svelte-qs0vfb"), Y(o, "class", "svelte-qs0vfb") }, m(h, b) { pt(h, r, b), pt(h, o, b), C(o, i), C(o, u), C(o, c), C(c, l), tr(s, c, null), C(c, f), C(o, p), C(o, y), C(o, _), C(o, M), C(o, k), C(o, S), d = !0 }, p(h, [b]) { const I = {}; b & 1 && (I.$$scope = { dirty: b, ctx: h }), s.$set(I) }, i(h) { d || (At(s.$$.fragment, h), d = !0) }, o(h) { Dt(s.$$.fragment, h), d = !1 }, d(h) { h && st(r), h && st(o), rr(s) } } } class Mi extends Ur { constructor(r) { super(), $r(this, r, null, bi, Or, {}) } } var Ee, wr = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, no = { exports: {} }, ji = Math.floor, fn = Math.max, Ar = Math.min, Dn = function (n, r) { return r ? 2 * n / r : 1 }, wi = function (n, r) { var o, i, u, c, l, s; for (l = [n.length, r.length], o = c = 0, s = Ar(i = l[0], u = l[1]); 0 <= s ? c < s : c > s; o = 0 <= s ? ++c : --c) { if (n[o] < r[o]) return -1; if (n[o] > r[o]) return 1 } return i - u }, Gr = function (n, r) { return Object.prototype.hasOwnProperty.call(n, r) }, ki = function () { function n(r, o, i, u) { this.isjunk = r, o == null && (o = ""), i == null && (i = ""), this.autojunk = u == null || u, this.a = this.b = null, this.setSeqs(o, i) } return n.prototype.setSeqs = function (r, o) { return this.setSeq1(r), this.setSeq2(o) }, n.prototype.setSeq1 = function (r) { if (r !== this.a) return this.a = r, this.matchingBlocks = this.opcodes = null }, n.prototype.setSeq2 = function (r) { if (r !== this.b) return this.b = r, this.matchingBlocks = this.opcodes = null, this.fullbcount = null, this._chainB() }, n.prototype._chainB = function () { var r, o, i, u, c, l, s, f, p, y, _, M, k, S; for (r = this.b, this.b2j = o = {}, u = y = 0, M = r.length; y < M; u = ++y)i = r[u], (Gr(o, i) ? o[i] : o[i] = []).push(u); if (l = {}, c = this.isjunk) for (_ = 0, k = (S = Object.keys(o)).length; _ < k; _++)c(i = S[_]) && (l[i] = !0, delete o[i]); if (p = {}, s = r.length, this.autojunk && s >= 200) for (i in f = ji(s / 100) + 1, o) o[i].length > f && (p[i] = !0, delete o[i]); return this.isbjunk = function (d) { return Gr(l, d) }, this.isbpopular = function (d) { return Gr(p, d) } }, n.prototype.findLongestMatch = function (r, o, i, u) { var c, l, s, f, p, y, _, M, k, S, d, h, b, I, F, B, U, X, lt, dt, gt; for (c = (B = [this.a, this.b, this.b2j, this.isbjunk])[0], l = B[1], s = B[2], M = B[3], f = (U = [r, i, 0])[0], p = U[1], y = U[2], S = {}, _ = b = r; r <= o ? b < o : b > o; _ = r <= o ? ++b : --b) { for (h = {}, I = 0, F = (X = Gr(s, c[_]) ? s[c[_]] : []).length; I < F; I++)if (!((k = X[I]) < i)) { if (k >= u) break; (d = h[k] = (S[k - 1] || 0) + 1) > y && (f = (lt = [_ - d + 1, k - d + 1, d])[0], p = lt[1], y = lt[2]) } S = h } for (; f > r && p > i && !M(l[p - 1]) && c[f - 1] === l[p - 1];)f = (dt = [f - 1, p - 1, y + 1])[0], p = dt[1], y = dt[2]; for (; f + y < o && p + y < u && !M(l[p + y]) && c[f + y] === l[p + y];)y++; for (; f > r && p > i && M(l[p - 1]) && c[f - 1] === l[p - 1];)f = (gt = [f - 1, p - 1, y + 1])[0], p = gt[1], y = gt[2]; for (; f + y < o && p + y < u && M(l[p + y]) && c[f + y] === l[p + y];)y++; return [f, p, y] }, n.prototype.getMatchingBlocks = function () { var r, o, i, u, c, l, s, f, p, y, _, M, k, S, d, h, b, I, F, B, U, X, lt, dt, gt, wt; if (this.matchingBlocks) return this.matchingBlocks; for (I = [[0, S = (X = [this.a.length, this.b.length])[0], 0, d = X[1]]], h = []; I.length;)o = (lt = I.pop())[0], r = lt[1], u = lt[2], i = lt[3], c = (dt = F = this.findLongestMatch(o, r, u, i))[0], f = dt[1], (_ = dt[2]) && (h.push(F), o < c && u < f && I.push([o, c, u, f]), c + _ < r && f + _ < i && I.push([c + _, r, f + _, i])); for (h.sort(wi), l = p = M = 0, b = [], B = 0, U = h.length; B < U; B++)s = (gt = h[B])[0], y = gt[1], k = gt[2], l + M === s && p + M === y ? M += k : (M && b.push([l, p, M]), l = (wt = [s, y, k])[0], p = wt[1], M = wt[2]); return M && b.push([l, p, M]), b.push([S, d, 0]), this.matchingBlocks = b }, n.prototype.getOpcodes = function () { var r, o, i, u, c, l, s, f, p, y, _, M; if (this.opcodes) return this.opcodes; for (u = c = 0, this.opcodes = o = [], f = 0, p = (y = this.getMatchingBlocks()).length; f < p; f++)r = (_ = y[f])[0], i = _[1], l = _[2], s = "", u < r && c < i ? s = "replace" : u < r ? s = "delete" : c < i && (s = "insert"), s && o.push([s, u, r, c, i]), u = (M = [r + l, i + l])[0], c = M[1], l && o.push(["equal", r, u, i, c]); return o }, n.prototype.getGroupedOpcodes = function (r) { var o, i, u, c, l, s, f, p, y, _, M, k, S, d, h; for (r == null && (r = 3), (o = this.getOpcodes()).length || (o = [["equal", 0, 1, 0, 1]]), o[0][0] === "equal" && (y = (k = o[0])[0], c = k[1], l = k[2], s = k[3], f = k[4], o[0] = [y, fn(c, l - r), l, fn(s, f - r), f]), o[o.length - 1][0] === "equal" && (y = (S = o[o.length - 1])[0], c = S[1], l = S[2], s = S[3], f = S[4], o[o.length - 1] = [y, c, Ar(l, c + r), s, Ar(f, s + r)]), p = r + r, u = [], i = [], _ = 0, M = o.length; _ < M; _++)y = (d = o[_])[0], c = d[1], l = d[2], s = d[3], f = d[4], y === "equal" && l - c > p && (i.push([y, c, Ar(l, c + r), s, Ar(f, s + r)]), u.push(i), i = [], c = (h = [fn(c, l - r), fn(s, f - r)])[0], s = h[1]), i.push([y, c, l, s, f]); return !i.length || i.length === 1 && i[0][0] === "equal" || u.push(i), u }, n.prototype.ratio = function () { var r, o, i, u; for (r = 0, o = 0, i = (u = this.getMatchingBlocks()).length; o < i; o++)r += u[o][2]; return Dn(r, this.a.length + this.b.length) }, n.prototype.quickRatio = function () { var r, o, i, u, c, l, s, f, p, y, _; if (!this.fullbcount) for (this.fullbcount = i = {}, l = 0, f = (y = this.b).length; l < f; l++)i[o = y[l]] = (i[o] || 0) + 1; for (i = this.fullbcount, r = {}, u = 0, s = 0, p = (_ = this.a).length; s < p; s++)o = _[s], c = Gr(r, o) ? r[o] : i[o] || 0, r[o] = c - 1, c > 0 && u++; return Dn(u, this.a.length + this.b.length) }, n.prototype.realQuickRatio = function () { var r, o, i; return i = [this.a.length, this.b.length], Dn(Ar(r = i[0], o = i[1]), r + o) }, n }(), eo = { exports: {} }; Ee = eo, function () { var n, r, o, i, u, c, l, s, f, p, y, _, M, k, S; o = Math.floor, p = Math.min, r = function (d, h) { return d < h ? -1 : d > h ? 1 : 0 }, f = function (d, h, b, I, F) { var B; if (b == null && (b = 0), F == null && (F = r), b < 0) throw new Error("lo must be non-negative"); for (I == null && (I = d.length); b < I;)F(h, d[B = o((b + I) / 2)]) < 0 ? I = B : b = B + 1; return [].splice.apply(d, [b, b - b].concat(h)), h }, c = function (d, h, b) { return b == null && (b = r), d.push(h), k(d, 0, d.length - 1, b) }, u = function (d, h) { var b, I; return h == null && (h = r), b = d.pop(), d.length ? (I = d[0], d[0] = b, S(d, 0, h)) : I = b, I }, s = function (d, h, b) { var I; return b == null && (b = r), I = d[0], d[0] = h, S(d, 0, b), I }, l = function (d, h, b) { var I; return b == null && (b = r), d.length && b(d[0], h) < 0 && (h = (I = [d[0], h])[0], d[0] = I[1], S(d, 0, b)), h }, i = function (d, h) { var b, I, F, B, U, X; for (h == null && (h = r), U = [], I = 0, F = (B = function () { X = []; for (var lt = 0, dt = o(d.length / 2); 0 <= dt ? lt < dt : lt > dt; 0 <= dt ? lt++ : lt--)X.push(lt); return X }.apply(this).reverse()).length; I < F; I++)b = B[I], U.push(S(d, b, h)); return U }, M = function (d, h, b) { var I; if (b == null && (b = r), (I = d.indexOf(h)) !== -1) return k(d, 0, I, b), S(d, I, b) }, y = function (d, h, b) { var I, F, B, U, X; if (b == null && (b = r), !(F = d.slice(0, h)).length) return F; for (i(F, b), B = 0, U = (X = d.slice(h)).length; B < U; B++)I = X[B], l(F, I, b); return F.sort(b).reverse() }, _ = function (d, h, b) { var I, F, B, U, X, lt, dt, gt, wt; if (b == null && (b = r), 10 * h <= d.length) { if (!(B = d.slice(0, h).sort(b)).length) return B; for (F = B[B.length - 1], U = 0, lt = (dt = d.slice(h)).length; U < lt; U++)b(I = dt[U], F) < 0 && (f(B, I, 0, null, b), B.pop(), F = B[B.length - 1]); return B } for (i(d, b), wt = [], X = 0, gt = p(h, d.length); 0 <= gt ? X < gt : X > gt; 0 <= gt ? ++X : --X)wt.push(u(d, b)); return wt }, k = function (d, h, b, I) { var F, B, U; for (I == null && (I = r), F = d[b]; b > h && I(F, B = d[U = b - 1 >> 1]) < 0;)d[b] = B, b = U; return d[b] = F }, S = function (d, h, b) { var I, F, B, U, X; for (b == null && (b = r), F = d.length, X = h, B = d[h], I = 2 * h + 1; I < F;)(U = I + 1) < F && !(b(d[I], d[U]) < 0) && (I = U), d[h] = d[I], I = 2 * (h = I) + 1; return d[h] = B, k(d, X, h, b) }, n = function () { function d(h) { this.cmp = h ?? r, this.nodes = [] } return d.push = c, d.pop = u, d.replace = s, d.pushpop = l, d.heapify = i, d.updateItem = M, d.nlargest = y, d.nsmallest = _, d.prototype.push = function (h) { return c(this.nodes, h, this.cmp) }, d.prototype.pop = function () { return u(this.nodes, this.cmp) }, d.prototype.peek = function () { return this.nodes[0] }, d.prototype.contains = function (h) { return this.nodes.indexOf(h) !== -1 }, d.prototype.replace = function (h) { return s(this.nodes, h, this.cmp) }, d.prototype.pushpop = function (h) { return l(this.nodes, h, this.cmp) }, d.prototype.heapify = function () { return i(this.nodes, this.cmp) }, d.prototype.updateItem = function (h) { return M(this.nodes, h, this.cmp) }, d.prototype.clear = function () { return this.nodes = [] }, d.prototype.empty = function () { return this.nodes.length === 0 }, d.prototype.size = function () { return this.nodes.length }, d.prototype.clone = function () { var h; return (h = new d).nodes = this.nodes.slice(0), h }, d.prototype.toArray = function () { return this.nodes.slice(0) }, d.prototype.insert = d.prototype.push, d.prototype.top = d.prototype.peek, d.prototype.front = d.prototype.peek, d.prototype.has = d.prototype.contains, d.prototype.copy = d.prototype.clone, d }(), Ee.exports = n }.call(wr); var En, Cn, Pn, Ni = eo.exports, Pt = { exports: {} };/** - * @license - * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE - * Build: `lodash include="intersection,difference,uniq,intersectionWith,differenceWith,uniqWith,toArray,partialRight,keys,isArray,forEach,orderBy" -p -o ./lib/lodash.custom.min.js` - */(function (n, r) { - (function () { - function o(t, e, a) { switch (a.length) { case 0: return t.call(e); case 1: return t.call(e, a[0]); case 2: return t.call(e, a[0], a[1]); case 3: return t.call(e, a[0], a[1], a[2]) }return t.apply(e, a) } function i(t, e) { for (var a = -1, g = t == null ? 0 : t.length; ++a < g && e(t[a], a, t) !== !1;); return t } function u(t, e) { var a; if (a = !(t == null || !t.length)) { if (e == e) t: { a = -1; for (var g = t.length; ++a < g;)if (t[a] === e) break t; a = -1 } else t: { a = p, g = t.length; for (var m = -1; ++m < g;)if (a(t[m], m, t)) { a = m; break t } a = -1 } a = -1 < a } return a } function c(t, e, a) { for (var g = -1, m = t == null ? 0 : t.length; ++g < m;)if (a(e, t[g])) return !0; return !1 } function l(t, e) { for (var a = -1, g = t == null ? 0 : t.length, m = Array(g); ++a < g;)m[a] = e(t[a], a, t); return m } function s(t, e) { for (var a = -1, g = e.length, m = t.length; ++a < g;)t[m + a] = e[a]; return t } function f(t, e) { for (var a = -1, g = t == null ? 0 : t.length; ++a < g;)if (e(t[a], a, t)) return !0; return !1 } function p(t) { return t != t } function y(t) { return function (e) { return t(e) } } function _(t, e) { return t.has(e) } function M(t) { var e = -1, a = Array(t.size); return t.forEach(function (g, m) { a[++e] = [m, g] }), a } function k(t) { var e = Object; return function (a) { return t(e(a)) } } function S(t, e) { for (var a = -1, g = t.length, m = 0, w = []; ++a < g;) { var N = t[a]; N !== e && N !== "__lodash_placeholder__" || (t[a] = "__lodash_placeholder__", w[m++] = a) } return w } function d(t) { var e = -1, a = Array(t.size); return t.forEach(function (g) { a[++e] = g }), a } function h() { } function b(t) { this.__wrapped__ = t, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = 4294967295, this.__views__ = [] } function I(t) { var e = -1, a = t == null ? 0 : t.length; for (this.clear(); ++e < a;) { var g = t[e]; this.set(g[0], g[1]) } } function F(t) { var e = -1, a = t == null ? 0 : t.length; for (this.clear(); ++e < a;) { var g = t[e]; this.set(g[0], g[1]) } } function B(t) { var e = -1, a = t == null ? 0 : t.length; for (this.clear(); ++e < a;) { var g = t[e]; this.set(g[0], g[1]) } } function U(t) { var e = -1, a = t == null ? 0 : t.length; for (this.__data__ = new B; ++e < a;)this.add(t[e]) } function X(t) { this.size = (this.__data__ = new F(t)).size } function lt(t, e) { var a = xt(t), g = !a && un(t), m = !a && !g && Qr(t), w = !a && !g && !m && xn(t); if (a = a || g || m || w) { g = t.length; for (var N = String, L = -1, D = Array(g); ++L < g;)D[L] = N(L); g = D } else g = []; var E; N = g.length; for (E in t) !e && !Tt.call(t, E) || a && (E == "length" || m && (E == "offset" || E == "parent") || w && (E == "buffer" || E == "byteLength" || E == "byteOffset") || W(E, N)) || g.push(E); return g } function dt(t, e, a) { var g = t[e]; Tt.call(t, e) && kt(g, a) && (a !== Z || e in t) || wt(t, e, a) } function gt(t, e) { for (var a = t.length; a--;)if (kt(t[a][0], e)) return a; return -1 } function wt(t, e, a) { e == "__proto__" && on ? on(t, e, { configurable: !0, enumerable: !0, value: a, writable: !0 }) : t[e] = a } function jt(t, e, a, g, m, w) { var N, L = 1 & e, D = 2 & e, E = 4 & e; if (a && (N = m ? a(t, g, m, w) : a(t)), N !== Z) return N; if (!Kt(t)) return t; if (g = xt(t)) { if (N = function (Q) { var ot = Q.length, vt = new Q.constructor(ot); return ot && typeof Q[0] == "string" && Tt.call(Q, "index") && (vt.index = Q.index, vt.input = Q.input), vt }(t), !L) return $t(t, N) } else { var O = Rt(t), R = O == "[object Function]" || O == "[object GeneratorFunction]"; if (Qr(t)) return function (Q, ot) { if (ot) return Q.slice(); var vt = Q.length; return vt = pe ? pe(vt) : new Q.constructor(vt), Q.copy(vt), vt }(t, L); if (O == "[object Object]" || O == "[object Arguments]" || R && !m) { if (N = D || R || typeof t.constructor != "function" || bt(t) ? {} : Ln(de(t)), !L) return D ? function (Q, ot) { return cr(Q, we(Q), ot) }(t, function (Q, ot) { return Q && cr(ot, Xr(ot), Q) }(N, t)) : function (Q, ot) { return cr(Q, Sn(Q), ot) }(t, function (Q, ot) { return Q && cr(ot, br(ot), Q) }(N, t)) } else { if (!yt[O]) return m ? t : {}; N = function (Q, ot, vt) { var Nt = Q.constructor; switch (ot) { case "[object ArrayBuffer]": return ur(Q); case "[object Boolean]": case "[object Date]": return new Nt(+Q); case "[object DataView]": return ot = vt ? ur(Q.buffer) : Q.buffer, new Q.constructor(ot, Q.byteOffset, Q.byteLength); case "[object Float32Array]": case "[object Float64Array]": case "[object Int8Array]": case "[object Int16Array]": case "[object Int32Array]": case "[object Uint8Array]": case "[object Uint8ClampedArray]": case "[object Uint16Array]": case "[object Uint32Array]": return ot = vt ? ur(Q.buffer) : Q.buffer, new Q.constructor(ot, Q.byteOffset, Q.length); case "[object Map]": return new Nt; case "[object Number]": case "[object String]": return new Nt(Q); case "[object RegExp]": return (ot = new Q.constructor(Q.source, _o.exec(Q))).lastIndex = Q.lastIndex, ot; case "[object Set]": return new Nt; case "[object Symbol]": return Yr ? Object(Yr.call(Q)) : {} } }(t, O, L) } } if (w || (w = new X), m = w.get(t)) return m; if (w.set(t, N), Le(t)) return t.forEach(function (V) { N.add(jt(V, e, a, V, t, w)) }), N; if (Ie(t)) return t.forEach(function (V, Q) { N.set(Q, jt(V, e, a, Q, t, w)) }), N; D = E ? D ? ut : rt : D ? Xr : br; var et = g ? Z : D(t); return i(et || t, function (V, Q) { et && (V = t[Q = V]), dt(N, Q, jt(V, e, a, Q, t, w)) }), N } function Et(t, e, a, g) { var m = -1, w = u, N = !0, L = t.length, D = [], E = e.length; if (!L) return D; a && (e = l(e, y(a))), g ? (w = c, N = !1) : 200 <= e.length && (w = _, N = !1, e = new U(e)); t: for (; ++m < L;) { var O = t[m], R = a == null ? O : a(O); if (O = g || O !== 0 ? O : 0, N && R == R) { for (var et = E; et--;)if (e[et] === R) continue t; D.push(O) } else w(e, R, g) || D.push(O) } return D } function Bt(t, e, a, g, m) { var w = -1, N = t.length; for (a || (a = q), m || (m = []); ++w < N;) { var L = t[w]; 0 < e && a(L) ? 1 < e ? Bt(L, e - 1, a, g, m) : s(m, L) : g || (m[m.length] = L) } return m } function sr(t, e) { for (var a = 0, g = (e = Ft(e, t)).length; t != null && a < g;)t = t[ir(e[a++])]; return a && a == g ? t : Z } function er(t, e, a) { return e = e(t), xt(t) ? e : s(e, a(t)) } function Ct(t) { if (t == null) t = t === Z ? "[object Undefined]" : "[object Null]"; else if (Mr && Mr in Object(t)) { var e = Tt.call(t, Mr), a = t[Mr]; try { t[Mr] = Z; var g = !0 } catch { } var m = ge.call(t); g && (e ? t[Mr] = a : delete t[Mr]), t = m } else t = ge.call(t); return t } function Vt(t, e, a) { for (var g = a ? c : u, m = t[0].length, w = t.length, N = w, L = Array(w), D = 1 / 0, E = []; N--;) { var O = t[N]; N && e && (O = l(O, y(e))), D = kn(O.length, D), L[N] = !a && (e || 120 <= m && 120 <= O.length) ? new U(N && O) : Z } O = t[0]; var R = -1, et = L[0]; t: for (; ++R < m && E.length < D;) { var V = O[R], Q = e ? e(V) : V; if (V = a || V !== 0 ? V : 0, et ? !_(et, Q) : !g(E, Q, a)) { for (N = w; --N;) { var ot = L[N]; if (ot ? !_(ot, Q) : !g(t[N], Q, a)) continue t } et && et.push(Q), E.push(V) } } return E } function qt(t) { return Xt(t) && Ct(t) == "[object Arguments]" } function Gt(t, e, a, g, m) { if (t === e) e = !0; else if (t == null || e == null || !Xt(t) && !Xt(e)) e = t != t && e != e; else t: { var w, N, L = xt(t), D = xt(e), E = (w = (w = L ? "[object Array]" : Rt(t)) == "[object Arguments]" ? "[object Object]" : w) == "[object Object]"; if (D = (N = (N = D ? "[object Array]" : Rt(e)) == "[object Arguments]" ? "[object Object]" : N) == "[object Object]", (N = w == N) && Qr(t)) { if (!Qr(e)) { e = !1; break t } L = !0, E = !1 } if (N && !E) m || (m = new X), e = L || xn(t) ? J(t, e, a, g, Gt, m) : T(t, e, w, a, g, Gt, m); else { if (!(1 & a) && (L = E && Tt.call(t, "__wrapped__"), w = D && Tt.call(e, "__wrapped__"), L || w)) { t = L ? t.value() : t, e = w ? e.value() : e, m || (m = new X), e = Gt(t, e, a, g, m); break t } if (N) r: if (m || (m = new X), L = 1 & a, w = rt(t), D = w.length, N = rt(e).length, D == N || L) { for (E = D; E--;) { var O = w[E]; if (!(L ? O in e : Tt.call(e, O))) { e = !1; break r } } if ((N = m.get(t)) && m.get(e)) e = N == e; else { N = !0, m.set(t, e), m.set(e, t); for (var R = L; ++E < D;) { var et = t[O = w[E]], V = e[O]; if (g) var Q = L ? g(V, et, O, e, t, m) : g(et, V, O, t, e, m); if (Q === Z ? et !== V && !Gt(et, V, a, g, m) : !Q) { N = !1; break } R || (R = O == "constructor") } N && !R && (a = t.constructor) != (g = e.constructor) && "constructor" in t && "constructor" in e && !(typeof a == "function" && a instanceof a && typeof g == "function" && g instanceof g) && (N = !1), m.delete(t), m.delete(e), e = N } } else e = !1; else e = !1 } } return e } function gr(t) { return typeof t == "function" ? t : t == null ? Ir : typeof t == "object" ? xt(t) ? function (a, g) { return ht(a) && g == g && !Kt(g) ? ct(ir(a), g) : function (m) { var w = Kn(m, a); return w === Z && w === g ? Xn(m, a) : Gt(g, w, 3) } }(t[0], t[1]) : function (a) { var g = function (w) { for (var N = br(w), L = N.length; L--;) { var D = N[L], E = w[D]; N[L] = [D, E, E == E && !Kt(E)] } return N }(a); return g.length == 1 && g[0][2] ? ct(g[0][0], g[0][1]) : function (m) { return m === a || function (N, L) { var D = L.length, E = D; if (N == null) return !E; for (N = Object(N); D--;)if ((O = L[D])[2] ? O[1] !== N[O[0]] : !(O[0] in N)) return !1; for (; ++D < E;) { var O, R = (O = L[D])[0], et = N[R], V = O[1]; if (O[2]) { if (et === Z && !(R in N)) return !1 } else if (!Gt(V, et, 3, void 0, O = new X)) return !1 } return !0 }(m, g) } }(t) : ne(t) } function or(t, e, a) { var g = -1; return e = l(e.length ? e : [Ir], y(P())), function (w, N) { var L = w.length; for (w.sort(N); L--;)w[L] = w[L].c; return w }(t = function (w, N) { var L = -1, D = _r(w) ? Array(w.length) : []; return be(w, function (E, O, R) { D[++L] = N(E, O, R) }), D }(t, function (m) { return { a: l(e, function (w) { return w(m) }), b: ++g, c: m } }), function (m, w) { var N; t: { N = -1; for (var L = m.a, D = w.a, E = L.length, O = a.length; ++N < E;) { var R; r: { R = L[N]; var et = D[N]; if (R !== et) { var V = R !== Z, Q = R === null, ot = R == R, vt = vr(R), Nt = et !== Z, Mt = et === null, It = et == et, Qt = vr(et); if (!Mt && !Qt && !vt && R > et || vt && Nt && It && !Mt && !Qt || Q && Nt && It || !V && It || !ot) { R = 1; break r } if (!Q && !vt && !Qt && R < et || Qt && V && ot && !Q && !vt || Mt && V && ot || !Nt && ot || !It) { R = -1; break r } } R = 0 } if (R) { N = N >= O ? R : R * (a[N] == "desc" ? -1 : 1); break t } } N = m.b - w.b } return N }) } function zt(t) { return Ne(tt(t, Ir), t + "") } function lr(t) { if (typeof t == "string") return t; if (xt(t)) return l(t, lr) + ""; if (vr(t)) return ve ? ve.call(t) : ""; var e = t + ""; return e == "0" && 1 / t == -Pr ? "-0" : e } function pr(t, e, a) { var g = -1, m = u, w = t.length, N = !0, L = [], D = L; if (a) N = !1, m = c; else if (200 <= w) { if (m = e ? null : Bo(t)) return d(m); N = !1, m = _, D = new U } else D = e ? [] : L; t: for (; ++g < w;) { var E = t[g], O = e ? e(E) : E; if (E = a || E !== 0 ? E : 0, N && O == O) { for (var R = D.length; R--;)if (D[R] === O) continue t; e && D.push(O), L.push(E) } else m(D, O, a) || (D !== L && D.push(O), L.push(E)) } return L } function Wt(t) { return mr(t) ? t : [] } function Ft(t, e) { return xt(t) ? t : ht(t, e) ? [t] : qo(Jn(t)) } function ur(t) { var e = new t.constructor(t.byteLength); return new en(e).set(new en(t)), e } function Zt(t, e, a, g) { var m = -1, w = t.length, N = a.length, L = -1, D = e.length, E = Lr(w - N, 0), O = Array(D + E); for (g = !g; ++L < D;)O[L] = e[L]; for (; ++m < N;)(g || m < w) && (O[a[m]] = t[m]); for (; E--;)O[L++] = t[m++]; return O } function Ot(t, e, a, g) { var m = -1, w = t.length, N = -1, L = a.length, D = -1, E = e.length, O = Lr(w - L, 0), R = Array(O + E); for (g = !g; ++m < O;)R[m] = t[m]; for (O = m; ++D < E;)R[O + D] = e[D]; for (; ++N < L;)(g || m < w) && (R[O + a[N]] = t[m++]); return R } function $t(t, e) { var a = -1, g = t.length; for (e || (e = Array(g)); ++a < g;)e[a] = t[a]; return e } function cr(t, e, a) { var g = !a; a || (a = {}); for (var m = -1, w = e.length; ++m < w;) { var N = e[m], L = Z; L === Z && (L = t[N]), g ? wt(a, N, L) : dt(a, N, L) } return a } function A(t) { return function () { switch ((e = arguments).length) { case 0: return new t; case 1: return new t(e[0]); case 2: return new t(e[0], e[1]); case 3: return new t(e[0], e[1], e[2]); case 4: return new t(e[0], e[1], e[2], e[3]); case 5: return new t(e[0], e[1], e[2], e[3], e[4]); case 6: return new t(e[0], e[1], e[2], e[3], e[4], e[5]); case 7: return new t(e[0], e[1], e[2], e[3], e[4], e[5], e[6]) }var e, a = Ln(t.prototype); return Kt(e = t.apply(a, e)) ? e : a } } function j(t, e, a) { var g = A(t); return function m() { for (var w = arguments.length, N = Array(w), L = w, D = H(m); L--;)N[L] = arguments[L]; return (w -= (L = 3 > w && N[0] !== D && N[w - 1] !== D ? [] : S(N, D)).length) < a ? v(t, e, z, m.placeholder, Z, N, L, Z, Z, a - w) : o(this && this !== Ut && this instanceof m ? g : t, this, N) } } function z(t, e, a, g, m, w, N, L, D, E) { var O = 128 & e, R = 1 & e, et = 2 & e, V = 24 & e, Q = 512 & e, ot = et ? Z : A(t); return function vt() { for (var Nt = arguments.length, Mt = Array(Nt), It = Nt; It--;)Mt[It] = arguments[It]; if (V) { var Qt, jr = H(vt); for (It = Mt.length, Qt = 0; It--;)Mt[It] === jr && ++Qt } if (g && (Mt = Zt(Mt, g, m, V)), w && (Mt = Ot(Mt, w, N, V)), Nt -= Qt, V && Nt < E) return jr = S(Mt, jr), v(t, e, z, vt.placeholder, a, Mt, jr, L, D, E - Nt); if (jr = R ? a : this, It = et ? jr[t] : t, Nt = Mt.length, L) { Qt = Mt.length; for (var An = kn(L.length, Qt), Wo = $t(Mt); An--;) { var Se = L[An]; Mt[An] = W(Se, Qt) ? Wo[Se] : Z } } else Q && 1 < Nt && Mt.reverse(); return O && D < Nt && (Mt.length = D), this && this !== Ut && this instanceof vt && (It = ot || A(It)), It.apply(jr, Mt) } } function x(t, e, a, g) { var m = 1 & e, w = A(t); return function N() { for (var L = -1, D = arguments.length, E = -1, O = g.length, R = Array(O + D), et = this && this !== Ut && this instanceof N ? w : t; ++E < O;)R[E] = g[E]; for (; D--;)R[E++] = arguments[++L]; return o(et, m ? a : this, R) } } function v(t, e, a, g, m, w, N, L, D, E) { var O = 8 & e, R = O ? N : Z; 4 & (e = (e | (O ? 32 : 64)) & ~(O ? 64 : 32)) || (e &= -4), m = [t, e, m, O ? w : Z, R, w = O ? Z : w, N = O ? Z : N, L, D, E], a = a.apply(Z, m); t: for (L = t.name + "", D = me[L], E = Tt.call(me, L) ? D.length : 0; E--;)if (O = D[E], R = O.func, R == null || R == t) { L = O.name; break t } return typeof (D = h[L]) == "function" && L in b.prototype ? t === D ? L = !0 : L = !!(L = je(D)) && t === L[0] : L = !1, L && ke(a, m), a.placeholder = g, mt(a, t, e) } function J(t, e, a, g, m, w) { var N = 1 & a, L = t.length; if (L != (D = e.length) && !(N && D > L)) return !1; if ((D = w.get(t)) && w.get(e)) return D == e; var D = -1, E = !0, O = 2 & a ? new U : Z; for (w.set(t, e), w.set(e, t); ++D < L;) { var R = t[D], et = e[D]; if (g) var V = N ? g(et, R, D, e, t, w) : g(R, et, D, t, e, w); if (V !== Z) { if (V) continue; E = !1; break } if (O) { if (!f(e, function (Q, ot) { if (!_(O, ot) && (R === Q || m(R, Q, a, g, w))) return O.push(ot) })) { E = !1; break } } else if (R !== et && !m(R, et, a, g, w)) { E = !1; break } } return w.delete(t), w.delete(e), E } function T(t, e, a, g, m, w, N) { switch (a) { case "[object DataView]": if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset) break; t = t.buffer, e = e.buffer; case "[object ArrayBuffer]": if (t.byteLength != e.byteLength || !w(new en(t), new en(e))) break; return !0; case "[object Boolean]": case "[object Date]": case "[object Number]": return kt(+t, +e); case "[object Error]": return t.name == e.name && t.message == e.message; case "[object RegExp]": case "[object String]": return t == e + ""; case "[object Map]": var L = M; case "[object Set]": if (L || (L = d), t.size != e.size && !(1 & g)) break; return (a = N.get(t)) ? a == e : (g |= 2, N.set(t, e), e = J(L(t), L(e), g, m, w, N), N.delete(t), e); case "[object Symbol]": if (Yr) return Yr.call(t) == Yr.call(e) }return !1 } function rt(t) { return er(t, br, Sn) } function ut(t) { return er(t, Xr, we) } function H(t) { return (Tt.call(h, "placeholder") ? h : t).placeholder } function P() { var t = (t = h.iteratee || yn) === yn ? gr : t; return arguments.length ? t(arguments[0], arguments[1]) : t } function $(t, e) { var a = t.__data__, g = typeof e; return (g == "string" || g == "number" || g == "symbol" || g == "boolean" ? e !== "__proto__" : e === null) ? a[typeof e == "string" ? "string" : "hash"] : a.map } function G(t, e) { var a = t == null ? Z : t[e]; return !Kt(a) || se && se in a || !(dn(a) ? So : bo).test(Jt(a)) ? Z : a } function q(t) { return xt(t) || un(t) || !!(_e && t && t[_e]) } function W(t, e) { var a = typeof t; return !!(e = e ?? 9007199254740991) && (a == "number" || a != "symbol" && jo.test(t)) && -1 < t && t % 1 == 0 && t < e } function ht(t, e) { if (xt(t)) return !1; var a = typeof t; return !(a != "number" && a != "symbol" && a != "boolean" && t != null && !vr(t)) || co.test(t) || !uo.test(t) || e != null && t in Object(e) } function bt(t) { var e = t && t.constructor; return t === (typeof e == "function" && e.prototype || rn) } function ct(t, e) { return function (a) { return a != null && a[t] === e && (e !== Z || t in Object(a)) } } function tt(t, e) { var a = Lr((a = void 0) === Z ? t.length - 1 : a, 0); return function () { for (var g = arguments, m = -1, w = Lr(g.length - a, 0), N = Array(w); ++m < w;)N[m] = g[a + m]; for (m = -1, w = Array(a + 1); ++m < a;)w[m] = g[m]; return w[a] = e(N), o(t, this, w) } } function mt(t, e, a) { - var g = e + ""; e = Ne; var m, w = Nr; return a = w(m = (m = g.match(po)) ? m[1].split(ho) : [], a), (w = a.length) && (a[m = w - 1] = (1 < w ? "& " : "") + a[m], a = a.join(2 < w ? ", " : " "), g = g.replace(go, `{ -/* [wrapped with `+ a + `] */ -`)), e(t, g) - } function Yt(t) { var e = 0, a = 0; return function () { var g = To(), m = 16 - (g - a); if (a = g, 0 < m) { if (800 <= ++e) return arguments[0] } else e = 0; return t.apply(Z, arguments) } } function ir(t) { if (typeof t == "string" || vr(t)) return t; var e = t + ""; return e == "0" && 1 / t == -Pr ? "-0" : e } function Jt(t) { if (t != null) { try { return fe.call(t) } catch { } return t + "" } return "" } function Nr(t, e) { return i(lo, function (a) { var g = "_." + a[0]; e & a[1] && !u(t, g) && t.push(g) }), t.sort() } function dr(t) { var e = t == null ? 0 : t.length; return e ? t[e - 1] : Z } function fr(t, e) { return (xt(t) ? i : be)(t, P(e, 3)) } function it(t, e) { function a() { var g = arguments, m = e ? e.apply(this, g) : g[0], w = a.cache; return w.has(m) ? w.get(m) : (g = t.apply(this, g), a.cache = w.set(m, g) || w, g) } if (typeof t != "function" || e != null && typeof e != "function") throw new TypeError("Expected a function"); return a.cache = new (it.Cache || B), a } function kt(t, e) { return t === e || t != t && e != e } function _r(t) { return t != null && Kr(t.length) && !dn(t) } function mr(t) { return Xt(t) && _r(t) } function dn(t) { return !!Kt(t) && ((t = Ct(t)) == "[object Function]" || t == "[object GeneratorFunction]" || t == "[object AsyncFunction]" || t == "[object Proxy]") } function Kr(t) { return typeof t == "number" && -1 < t && t % 1 == 0 && 9007199254740991 >= t } function Kt(t) { var e = typeof t; return t != null && (e == "object" || e == "function") } function Xt(t) { return t != null && typeof t == "object" } function Rn(t) { return typeof t == "string" || !xt(t) && Xt(t) && Ct(t) == "[object String]" } function vr(t) { return typeof t == "symbol" || Xt(t) && Ct(t) == "[object Symbol]" } function Hn(t) { return t ? (t = Vn(t)) === Pr || t === -Pr ? 17976931348623157e292 * (0 > t ? -1 : 1) : t == t ? t : 0 : t === 0 ? t : 0 } function hn(t) { var e = (t = Hn(t)) % 1; return t == t ? e ? t - e : t : 0 } function Vn(t) { if (typeof t == "number") return t; if (vr(t)) return oe; if (Kt(t) && (t = Kt(t = typeof t.valueOf == "function" ? t.valueOf() : t) ? t + "" : t), typeof t != "string") return t === 0 ? t : +t; t = t.replace(so, ""); var e = vo.test(t); return e || Mo.test(t) ? No(t.slice(2), e ? 2 : 8) : mo.test(t) ? oe : +t } function Jn(t) { return t == null ? "" : lr(t) } function Kn(t, e, a) { return (t = t == null ? Z : sr(t, e)) === Z ? a : t } function Xn(t, e) { var a; if (a = t != null) { for (var g, m = -1, w = (g = Ft(e, a = t)).length, N = !1; ++m < w;) { var L = ir(g[m]); if (!(N = a != null && a != null && L in Object(a))) break; a = a[L] } N || ++m != w ? a = N : a = !!(w = a == null ? 0 : a.length) && Kr(w) && W(L, w) && (xt(a) || un(a)) } return a } function br(t) { if (_r(t)) t = lt(t); else if (bt(t)) { var e, a = []; for (e in Object(t)) Tt.call(t, e) && e != "constructor" && a.push(e); t = a } else t = Ao(t); return t } function Xr(t) { if (_r(t)) t = lt(t, !0); else if (Kt(t)) { var e, a = bt(t), g = []; for (e in t) (e != "constructor" || !a && Tt.call(t, e)) && g.push(e); t = g } else { if (e = [], t != null) for (a in Object(t)) e.push(a); t = e } return t } function te(t) { return t == null ? [] : function (a, g) { return l(g, function (m) { return a[m] }) }(t, br(t)) } function re(t) { return function () { return t } } function Ir(t) { return t } function yn(t) { return gr(typeof t == "function" ? t : jt(t, 1)) } function _n() { } function ne(t) { return ht(t) ? function (a) { return function (g) { return g == null ? Z : g[a] } }(ir(t)) : function (a) { return function (g) { return sr(g, a) } }(t) } function mn() { return [] } function ee() { return !1 } var Z, Pr = 1 / 0, oe = NaN, lo = [["ary", 128], ["bind", 1], ["bindKey", 2], ["curry", 8], ["curryRight", 16], ["flip", 512], ["partial", 32], ["partialRight", 64], ["rearg", 256]], uo = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, co = /^\w*$/, fo = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, so = /^\s+|\s+$/g, go = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, po = /\{\n\/\* \[wrapped with (.+)\] \*/, ho = /,? & /, yo = /\\(\\)?/g, _o = /\w*$/, mo = /^[-+]0x[0-9a-f]+$/i, vo = /^0b[01]+$/i, bo = /^\[object .+?Constructor\]$/, Mo = /^0o[0-7]+$/i, jo = /^(?:0|[1-9]\d*)$/, wo = RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*", "g"), ko = RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"), _t = {}; _t["[object Float32Array]"] = _t["[object Float64Array]"] = _t["[object Int8Array]"] = _t["[object Int16Array]"] = _t["[object Int32Array]"] = _t["[object Uint8Array]"] = _t["[object Uint8ClampedArray]"] = _t["[object Uint16Array]"] = _t["[object Uint32Array]"] = !0, _t["[object Arguments]"] = _t["[object Array]"] = _t["[object ArrayBuffer]"] = _t["[object Boolean]"] = _t["[object DataView]"] = _t["[object Date]"] = _t["[object Error]"] = _t["[object Function]"] = _t["[object Map]"] = _t["[object Number]"] = _t["[object Object]"] = _t["[object RegExp]"] = _t["[object Set]"] = _t["[object String]"] = _t["[object WeakMap]"] = !1; var yt = {}; yt["[object Arguments]"] = yt["[object Array]"] = yt["[object ArrayBuffer]"] = yt["[object DataView]"] = yt["[object Boolean]"] = yt["[object Date]"] = yt["[object Float32Array]"] = yt["[object Float64Array]"] = yt["[object Int8Array]"] = yt["[object Int16Array]"] = yt["[object Int32Array]"] = yt["[object Map]"] = yt["[object Number]"] = yt["[object Object]"] = yt["[object RegExp]"] = yt["[object Set]"] = yt["[object String]"] = yt["[object Symbol]"] = yt["[object Uint8Array]"] = yt["[object Uint8ClampedArray]"] = yt["[object Uint16Array]"] = yt["[object Uint32Array]"] = !0, yt["[object Error]"] = yt["[object Function]"] = yt["[object WeakMap]"] = !1; var hr, No = parseInt, ie = typeof wr == "object" && wr && wr.Object === Object && wr, Io = typeof self == "object" && self && self.Object === Object && self, Ut = ie || Io || Function("return this")(), vn = r && !r.nodeType && r, tn = vn && n && !n.nodeType && n, ae = tn && tn.exports === vn, bn = ae && ie.process; t: { try { hr = bn && bn.binding && bn.binding("util"); break t } catch { } hr = void 0 } var le = hr && hr.isMap, ue = hr && hr.isSet, ce = hr && hr.isTypedArray, Lo = Array.prototype, rn = Object.prototype, Mn = Ut["__core-js_shared__"], fe = Function.prototype.toString, Tt = rn.hasOwnProperty, se = function () { var t = /[^.]+$/.exec(Mn && Mn.keys && Mn.keys.IE_PROTO || ""); return t ? "Symbol(src)_1." + t : "" }(), ge = rn.toString, So = RegExp("^" + fe.call(Tt).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), nn = ae ? Ut.Buffer : Z, yr = Ut.Symbol, en = Ut.Uint8Array, pe = nn ? nn.f : Z, de = k(Object.getPrototypeOf), he = Object.create, ye = rn.propertyIsEnumerable, zo = Lo.splice, _e = yr ? yr.isConcatSpreadable : Z, jn = yr ? yr.iterator : Z, Mr = yr ? yr.toStringTag : Z, on = function () { try { var t = G(Object, "defineProperty"); return t({}, "", {}), t } catch { } }(), wn = Object.getOwnPropertySymbols, xo = nn ? nn.isBuffer : Z, Ao = k(Object.keys), Lr = Math.max, kn = Math.min, To = Date.now, Nn = G(Ut, "DataView"), Br = G(Ut, "Map"), In = G(Ut, "Promise"), Sr = G(Ut, "Set"), qr = G(Ut, "WeakMap"), Fr = G(Object, "create"), an = qr && new qr, me = {}, Do = Jt(Nn), Eo = Jt(Br), Co = Jt(In), Oo = Jt(Sr), $o = Jt(qr), ln = yr ? yr.prototype : Z, Yr = ln ? ln.valueOf : Z, ve = ln ? ln.toString : Z, Ln = function () { function t() { } return function (e) { return Kt(e) ? he ? he(e) : (t.prototype = e, e = new t, t.prototype = Z, e) : {} } }(); b.prototype = Ln(function () { }.prototype), b.prototype.constructor = b, I.prototype.clear = function () { this.__data__ = Fr ? Fr(null) : {}, this.size = 0 }, I.prototype.delete = function (t) { return t = this.has(t) && delete this.__data__[t], this.size -= t ? 1 : 0, t }, I.prototype.get = function (t) { var e = this.__data__; return Fr ? (t = e[t]) === "__lodash_hash_undefined__" ? Z : t : Tt.call(e, t) ? e[t] : Z }, I.prototype.has = function (t) { var e = this.__data__; return Fr ? e[t] !== Z : Tt.call(e, t) }, I.prototype.set = function (t, e) { var a = this.__data__; return this.size += this.has(t) ? 0 : 1, a[t] = Fr && e === Z ? "__lodash_hash_undefined__" : e, this }, F.prototype.clear = function () { this.__data__ = [], this.size = 0 }, F.prototype.delete = function (t) { var e = this.__data__; return !(0 > (t = gt(e, t)) || (t == e.length - 1 ? e.pop() : zo.call(e, t, 1), --this.size, 0)) }, F.prototype.get = function (t) { var e = this.__data__; return 0 > (t = gt(e, t)) ? Z : e[t][1] }, F.prototype.has = function (t) { return -1 < gt(this.__data__, t) }, F.prototype.set = function (t, e) { var a = this.__data__, g = gt(a, t); return 0 > g ? (++this.size, a.push([t, e])) : a[g][1] = e, this }, B.prototype.clear = function () { this.size = 0, this.__data__ = { hash: new I, map: new (Br || F), string: new I } }, B.prototype.delete = function (t) { return t = $(this, t).delete(t), this.size -= t ? 1 : 0, t }, B.prototype.get = function (t) { return $(this, t).get(t) }, B.prototype.has = function (t) { return $(this, t).has(t) }, B.prototype.set = function (t, e) { var a = $(this, t), g = a.size; return a.set(t, e), this.size += a.size == g ? 0 : 1, this }, U.prototype.add = U.prototype.push = function (t) { return this.__data__.set(t, "__lodash_hash_undefined__"), this }, U.prototype.has = function (t) { return this.__data__.has(t) }, X.prototype.clear = function () { this.__data__ = new F, this.size = 0 }, X.prototype.delete = function (t) { var e = this.__data__; return t = e.delete(t), this.size = e.size, t }, X.prototype.get = function (t) { return this.__data__.get(t) }, X.prototype.has = function (t) { return this.__data__.has(t) }, X.prototype.set = function (t, e) { var a = this.__data__; if (a instanceof F) { var g = a.__data__; if (!Br || 199 > g.length) return g.push([t, e]), this.size = ++a.size, this; a = this.__data__ = new B(g) } return a.set(t, e), this.size = a.size, this }; var be = function (t, e) { if (t == null) return t; if (!_r(t)) return function (w, N) { return w && Uo(w, N, br) }(t, e); for (var a = t.length, g = -1, m = Object(t); ++g < a && e(m[g], g, m) !== !1;); return t }, Uo = function (t, e, a) { for (var g = -1, m = Object(t), w = (a = a(t)).length; w--;) { var N = a[++g]; if (e(m[N], N, m) === !1) break } return t }, Me = an ? function (t, e) { return an.set(t, e), t } : Ir, Po = on ? function (t, e) { return on(t, "toString", { configurable: !0, enumerable: !1, value: re(e), writable: !0 }) } : Ir, Bo = Sr && 1 / d(new Sr([, -0]))[1] == Pr ? function (t) { return new Sr(t) } : _n, je = an ? function (t) { return an.get(t) } : _n, Sn = wn ? function (t) { return t == null ? [] : (t = Object(t), function (a, g) { for (var m = -1, w = a == null ? 0 : a.length, N = 0, L = []; ++m < w;) { var D = a[m]; g(D, m, a) && (L[N++] = D) } return L }(wn(t), function (e) { return ye.call(t, e) })) } : mn, we = wn ? function (t) { for (var e = []; t;)s(e, Sn(t)), t = de(t); return e } : mn, Rt = Ct; (Nn && Rt(new Nn(new ArrayBuffer(1))) != "[object DataView]" || Br && Rt(new Br) != "[object Map]" || In && Rt(In.resolve()) != "[object Promise]" || Sr && Rt(new Sr) != "[object Set]" || qr && Rt(new qr) != "[object WeakMap]") && (Rt = function (t) { var e = Ct(t); if (t = (t = e == "[object Object]" ? t.constructor : Z) ? Jt(t) : "") switch (t) { case Do: return "[object DataView]"; case Eo: return "[object Map]"; case Co: return "[object Promise]"; case Oo: return "[object Set]"; case $o: return "[object WeakMap]" }return e }); var ke = Yt(Me), Ne = Yt(Po), qo = function (t) { var e = (t = it(t, function (a) { return e.size === 500 && e.clear(), a })).cache; return t }(function (t) { var e = []; return t.charCodeAt(0) === 46 && e.push(""), t.replace(fo, function (a, g, m, w) { e.push(m ? w.replace(yo, "$1") : g || a) }), e }), Fo = zt(function (t, e) { return mr(t) ? Et(t, Bt(e, 1, mr, !0)) : [] }), Yo = zt(function (t, e) { var a = dr(e); return mr(a) && (a = Z), mr(t) ? Et(t, Bt(e, 1, mr, !0), Z, a) : [] }), Qo = zt(function (t) { var e = l(t, Wt); return e.length && e[0] === t[0] ? Vt(e) : [] }), Go = zt(function (t) { var e = dr(t), a = l(t, Wt); return (e = typeof e == "function" ? e : Z) && a.pop(), a.length && a[0] === t[0] ? Vt(a, Z, e) : [] }); it.Cache = B; var zn = zt(function (t, e) { var a, g, m = S(e, H(zn)), w = t, N = Z, L = e, D = m, E = 64; if (!(m = 2 & E) && typeof w != "function") throw new TypeError("Expected a function"); var O = L ? L.length : 0; if (O || (E &= -97, L = D = Z), a = a === Z ? a : Lr(hn(a), 0), g = g === Z ? g : hn(g), O -= D ? D.length : 0, 64 & E) { var R = L, et = D; L = D = Z } var V = m ? Z : je(w); return a = [w, E, N, L, D, R, et, void 0, a, g], V && (N = (L = a[1]) | (w = V[1]), g = w == 128 && L == 8 || w == 128 && L == 256 && a[7].length <= V[8] || w == 384 && V[7].length <= V[8] && L == 8, 131 > N || g) && (1 & w && (a[2] = V[2], N |= 1 & L ? 0 : 4), (L = V[3]) && (g = a[3], a[3] = g ? Zt(g, L, V[4]) : L, a[4] = g ? S(a[3], "__lodash_placeholder__") : V[4]), (L = V[5]) && (g = a[5], a[5] = g ? Ot(g, L, V[6]) : L, a[6] = g ? S(a[5], "__lodash_placeholder__") : V[6]), (L = V[7]) && (a[7] = L), 128 & w && (a[8] = a[8] == null ? V[8] : kn(a[8], V[8])), a[9] == null && (a[9] = V[9]), a[0] = V[0], a[1] = N), w = a[0], E = a[1], N = a[2], L = a[3], D = a[4], !(g = a[9] = a[9] === Z ? m ? 0 : w.length : Lr(a[9] - O, 0)) && 24 & E && (E &= -25), mt((V ? Me : ke)(E && E != 1 ? E == 8 || E == 16 ? j(w, E, g) : E != 32 && E != 33 || D.length ? z.apply(Z, a) : x(w, E, N, L) : function (ot, vt, Nt) { var Mt = 1 & vt, It = A(ot); return function Qt() { return (this && this !== Ut && this instanceof Qt ? It : ot).apply(Mt ? Nt : this, arguments) } }(w, E, N), a), w, E) }), un = qt(function () { return arguments }()) ? qt : function (t) { return Xt(t) && Tt.call(t, "callee") && !ye.call(t, "callee") }, xt = Array.isArray, Qr = xo || ee, Ie = le ? y(le) : function (e) { return Xt(e) && Rt(e) == "[object Map]" }, Le = ue ? y(ue) : function (e) { return Xt(e) && Rt(e) == "[object Set]" }, xn = ce ? y(ce) : function (e) { return Xt(e) && Kr(e.length) && !!_t[Ct(e)] }; h.constant = re, h.difference = Fo, h.differenceWith = Yo, h.intersection = Qo, h.intersectionWith = Go, h.iteratee = yn, h.keys = br, h.keysIn = Xr, h.memoize = it, h.orderBy = function (t, e, a, g) { return t == null ? [] : (xt(e) || (e = e == null ? [] : [e]), xt(a = g ? Z : a) || (a = a == null ? [] : [a]), or(t, e, a)) }, h.partialRight = zn, h.property = ne, h.toArray = function (t) { if (!t) return []; if (_r(t)) return Rn(t) ? ko.test(t) ? t.match(wo) || [] : t.split("") : $t(t); if (jn && t[jn]) { t = t[jn](); for (var e, a = []; !(e = t.next()).done;)a.push(e.value); return a } return ((e = Rt(t)) == "[object Map]" ? M : e == "[object Set]" ? d : te)(t) }, h.uniq = function (t) { return t && t.length ? pr(t) : [] }, h.uniqWith = function (t, e) { return e = typeof e == "function" ? e : Z, t && t.length ? pr(t, Z, e) : [] }, h.values = te, h.eq = kt, h.forEach = fr, h.get = Kn, h.hasIn = Xn, h.identity = Ir, h.isArguments = un, h.isArray = xt, h.isArrayLike = _r, h.isArrayLikeObject = mr, h.isBuffer = Qr, h.isFunction = dn, h.isLength = Kr, h.isMap = Ie, h.isObject = Kt, h.isObjectLike = Xt, h.isSet = Le, h.isString = Rn, h.isSymbol = vr, h.isTypedArray = xn, h.last = dr, h.stubArray = mn, h.stubFalse = ee, h.noop = _n, h.toFinite = Hn, h.toInteger = hn, h.toNumber = Vn, h.toString = Jn, h.each = fr, h.VERSION = "4.17.5", zn.placeholder = h, tn ? ((tn.exports = h)._ = h, vn._ = h) : Ut._ = h - }).call(wr) -})(Pt, Pt.exports), String.prototype.codePointAt || (En = function () { try { var n = {}, r = Object.defineProperty, o = r(n, n, n) && r } catch { } return o }(), Cn = function (n) { if (this == null) throw TypeError(); var r = String(this), o = r.length, i = n ? Number(n) : 0; if (i != i && (i = 0), !(i < 0 || i >= o)) { var u, c = r.charCodeAt(i); return c >= 55296 && c <= 56319 && o > i + 1 && (u = r.charCodeAt(i + 1)) >= 56320 && u <= 57343 ? 1024 * (c - 55296) + u - 56320 + 65536 : c } }, En ? En(String.prototype, "codePointAt", { value: Cn, configurable: !0, writable: !0 }) : String.prototype.codePointAt = Cn), String.fromCodePoint || function () { var n = function () { try { var u = {}, c = Object.defineProperty, l = c(u, u, u) && c } catch { } return l }(), r = String.fromCharCode, o = Math.floor, i = function (u) { var c, l, s = 16384, f = [], p = -1, y = arguments.length; if (!y) return ""; for (var _ = ""; ++p < y;) { var M = Number(arguments[p]); if (!isFinite(M) || M < 0 || M > 1114111 || o(M) != M) throw RangeError("Invalid code point: " + M); M <= 65535 ? f.push(M) : (c = 55296 + ((M -= 65536) >> 10), l = M % 1024 + 56320, f.push(c, l)), (p + 1 == y || f.length > s) && (_ += r.apply(null, f), f.length = 0) } return _ }; n ? n(String, "fromCodePoint", { value: i, configurable: !0, writable: !0 }) : String.fromCodePoint = i }(); try { Pn = typeof Intl < "u" && Intl.Collator !== void 0 ? Intl.Collator("generic", { sensitivity: "base" }) : null } catch { typeof console !== void 0 && console.warn("Collator could not be initialized and wouldn't be used") } var Bn, Ii = function (r, o, i, u) { var c = [], l = [], s = i && Pn && i.useCollator, f = 1; if (i && i.subcost && typeof i.subcost == "number" && (f = i.subcost), r === o) return 0; var p, y, _, M, k = u(r), S = u(o), d = k.length, h = S.length; if (d === 0) return h; if (h === 0) return d; for (var b = 0, I = 0; b < d;)l[b] = k[b].codePointAt(0), c[b] = ++b; if (s) for (; I < h;)for (p = S[I].codePointAt(0), _ = I++, y = I, b = 0; b < d; b++)M = Pn.compare(String.fromCodePoint(p), String.fromCodePoint(l[b])) === 0 ? _ : _ + f, _ = c[b], y = c[b] = _ > y ? M > y ? y + 1 : M : M > _ ? _ + 1 : M; else for (; I < h;)for (p = S[I].codePointAt(0), _ = I++, y = I, b = 0; b < d; b++)M = p === l[b] ? _ : _ + f, _ = c[b], y = c[b] = _ > y ? M > y ? y + 1 : M : M > _ ? _ + 1 : M; return y }; try { Bn = typeof Intl < "u" && Intl.Collator !== void 0 ? Intl.Collator("generic", { sensitivity: "base" }) : null } catch { typeof console !== void 0 && console.warn("Collator could not be initialized and wouldn't be used") } var qn, Ce = function (r, o, i, u) { var c = [], l = [], s = i && Bn && i.useCollator, f = 1; if (i && i.subcost && typeof i.subcost == "number" && (f = i.subcost), r === o) return 0; var p = r.length, y = o.length; if (p === 0) return y; if (y === 0) return p; if (i && i.wildcards && typeof i.wildcards == "string" && i.wildcards.length > 0) { var _, M, k, S, d, h; if (i.full_process === !1 && i.processed !== !0) { M = (_ = i.wildcards[0]).charCodeAt(0); var b = "[" + function (U) { return U.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") }(i.wildcards) + "]"; if ((r = r.replace(new RegExp(b, "g"), _)) === (o = o.replace(new RegExp(b, "g"), _))) return 0 } else M = (_ = i.wildcards[0].toLowerCase()).charCodeAt(0); for (var I = 0, F = 0; I < p;)l[I] = r.charCodeAt(I), c[I] = ++I; if (s) for (; F < y;)for (k = o.charCodeAt(F), d = F++, S = F, I = 0; I < p; I++)h = Bn.compare(String.fromCharCode(k), String.fromCharCode(l[I])) === 0 || k === M || l[I] === M ? d : d + f, d = c[I], S = c[I] = d > S ? h > S ? S + 1 : h : h > d ? d + 1 : h; else for (; F < y;)for (k = o.charCodeAt(F), d = F++, S = F, I = 0; I < p; I++)h = k === l[I] || k === M || l[I] === M ? d : d + f, d = c[I], S = c[I] = d > S ? h > S ? S + 1 : h : h > d ? d + 1 : h; return S } return u(r, o, i) }; try { qn = typeof Intl < "u" && Intl.Collator !== void 0 ? Intl.Collator("generic", { sensitivity: "base" }) : null } catch { typeof console !== void 0 && console.warn("Collator could not be initialized and wouldn't be used") } var Oe = function (r, o, i) { var u = [], c = [], l = i && qn && i.useCollator, s = 1; if (i && i.subcost && typeof i.subcost == "number" && (s = i.subcost), r === o) return 0; var f, p, y, _, M = r.length, k = o.length; if (M === 0) return k; if (k === 0) return M; for (var S = 0, d = 0; S < M;)c[S] = r.charCodeAt(S), u[S] = ++S; if (l) for (; d < k;)for (f = o.charCodeAt(d), y = d++, p = d, S = 0; S < M; S++)_ = qn.compare(String.fromCharCode(f), String.fromCharCode(c[S])) === 0 ? y : y + s, y = u[S], p = u[S] = y > p ? _ > p ? p + 1 : _ : _ > y ? y + 1 : _; else for (; d < k;)for (f = o.charCodeAt(d), y = d++, p = d, S = 0; S < M; S++)_ = f === c[S] ? y : y + s, y = u[S], p = u[S] = y > p ? _ > p ? p + 1 : _ : _ > y ? y + 1 : _; return p }; (function (n, r) { if (!n.setImmediate) { var o, i = 1, u = {}, c = !1, l = n.document, s = Object.getPrototypeOf && Object.getPrototypeOf(n); s = s && s.setTimeout ? s : n, {}.toString.call(n.process) === "[object process]" ? function () { o = function (_) { process.nextTick(function () { p(_) }) } }() : function () { if (n.postMessage && !n.importScripts) { var _ = !0, M = n.onmessage; return n.onmessage = function () { _ = !1 }, n.postMessage("", "*"), n.onmessage = M, _ } }() ? function () { var _ = "setImmediate$" + Math.random() + "$", M = function (k) { k.source === n && typeof k.data == "string" && k.data.indexOf(_) === 0 && p(+k.data.slice(_.length)) }; n.addEventListener ? n.addEventListener("message", M, !1) : n.attachEvent("onmessage", M), o = function (k) { n.postMessage(_ + k, "*") } }() : n.MessageChannel ? function () { var _ = new MessageChannel; _.port1.onmessage = function (M) { p(M.data) }, o = function (M) { _.port2.postMessage(M) } }() : l && "onreadystatechange" in l.createElement("script") ? function () { var _ = l.documentElement; o = function (M) { var k = l.createElement("script"); k.onreadystatechange = function () { p(M), k.onreadystatechange = null, _.removeChild(k), k = null }, _.appendChild(k) } }() : function () { o = function (_) { setTimeout(p, 0, _) } }(), s.setImmediate = function (_) { typeof _ != "function" && (_ = new Function("" + _)); for (var M = new Array(arguments.length - 1), k = 0; k < M.length; k++)M[k] = arguments[k + 1]; var S = { callback: _, args: M }; return u[i] = S, o(i), i++ }, s.clearImmediate = f } function f(y) { delete u[y] } function p(y) { if (c) setTimeout(p, 0, y); else { var _ = u[y]; if (_) { c = !0; try { (function (k) { var S = k.callback, d = k.args; switch (d.length) { case 0: S(); break; case 1: S(d[0]); break; case 2: S(d[0], d[1]); break; case 3: S(d[0], d[1], d[2]); break; default: S.apply(void 0, d) } })(_) } finally { f(y), c = !1 } } } } })(typeof self > "u" ? wr : self);/*! - * XRegExp 3.1.1-next - * - * Steven Levithan (c) 2007-2016 MIT License - */var Li = { astral: !1, natives: !1 }, Lt = { exec: RegExp.prototype.exec, test: RegExp.prototype.test, match: String.prototype.match, replace: String.prototype.replace, split: String.prototype.split }, Wr = {}, Zr = {}, Tr = {}, Fn = [], Si = { default: /\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|\(\?(?:[:=!]|<[=!])|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/, class: /\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|[\s\S]/ }, zi = /\$(?:{([\w$]+)}|(\d\d?|[\s\S]))/g, xi = Lt.exec.call(/()??/, "")[1] === void 0, Ai = /x/.flags !== void 0, $e = {}.toString; function Zn(n) { var r = !0; try { new RegExp("", n) } catch { r = !1 } return r && n === "y" ? new RegExp("aa|.", "y").test("b") : r } var oo = Zn("u"), Yn = Zn("y"), io = { g: !0, i: !0, m: !0, u: oo, y: Yn }; function ao(n, r, o, i, u) { var c; if (n.xregexp = { captureNames: r }, u) return n; if (n.__proto__) n.__proto__ = nt.prototype; else for (c in nt.prototype) n[c] = nt.prototype[c]; return n.xregexp.source = o, n.xregexp.flags = i && i.split("").sort().join(""), n } function Jr(n) { return Lt.replace.call(n, /([\s\S])(?=[\s\S]*\1)/g, "") } function Rr(n, r) { if (!nt.isRegExp(n)) throw new TypeError("Type RegExp expected"); var o = n.xregexp || {}, i = function (p) { return Ai ? p.flags : Lt.exec.call(/\/([a-z]*)$/i, RegExp.prototype.toString.call(p))[1] }(n), u = "", c = "", l = null, s = null; return (r = r || {}).removeG && (c += "g"), r.removeY && (c += "y"), c && (i = Lt.replace.call(i, new RegExp("[" + c + "]+", "g"), "")), r.addG && (u += "g"), r.addY && (u += "y"), u && (i = Jr(i + u)), r.isInternalOnly || (o.source !== void 0 && (l = o.source), o.flags != null && (s = u ? Jr(o.flags + u) : o.flags)), n = ao(new RegExp(r.source || n.source, i), function (p) { return !(!p.xregexp || !p.xregexp.captureNames) }(n) ? o.captureNames.slice(0) : null, l, s, r.isInternalOnly) } function Ue(n) { return parseInt(n, 16) } function Pe(n) { return parseInt(n, 10).toString(16) } function sn(n, r) { var o, i = n.length; for (o = 0; o < i; ++o)if (n[o] === r) return o; return -1 } function Be(n, r, o) { return Lt.test.call(o.indexOf("x") > -1 ? /^(?:\s|#[^#\n]*|\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/ : /^(?:\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/, n.slice(r)) } function qe(n) { for (; n.length < 4;)n = "0" + n; return n } function Fe(n) { if (!/^[\w$]$/.test(n)) throw new Error("Flag must be a single character A-Za-z0-9_$"); io[n] = !0 } function Ti(n, r, o, i, u) { for (var c, l, s = Fn.length, f = n.charAt(o), p = null; s--;)if (!((l = Fn[s]).leadChar && l.leadChar !== f || l.scope !== i && l.scope !== "all" || l.flag && r.indexOf(l.flag) === -1) && (c = nt.exec(n, l.regex, o, "sticky"))) { p = { matchLength: c[0].length, output: l.handler.call(u, c, i, r), reparse: l.reparse }; break } return p } function nt(n, r) { if (nt.isRegExp(n)) { if (r !== void 0) throw new TypeError("Cannot supply flags when copying a RegExp"); return Rr(n) } if (n = n === void 0 ? "" : String(n), r = r === void 0 ? "" : String(r), nt.isInstalled("astral") && r.indexOf("A") === -1 && (r += "A"), Tr[n] || (Tr[n] = {}), !Tr[n][r]) { for (var o, i = { hasNamedCapture: !1, captureNames: [] }, u = "default", c = "", l = 0, s = function (k, S) { var d; if (Jr(S) !== S) throw new SyntaxError("Invalid duplicate regex flag " + S); for (k = Lt.replace.call(k, /^\(\?([\w$]+)\)/, function (h, b) { if (Lt.test.call(/[gy]/, b)) throw new SyntaxError("Cannot use flag g or y in mode modifier " + h); return S = Jr(S + b), "" }), d = 0; d < S.length; ++d)if (!io[S.charAt(d)]) throw new SyntaxError("Unknown regex flag " + S.charAt(d)); return { pattern: k, flags: S } }(n, r), f = s.pattern, p = s.flags; l < f.length;) { do (o = Ti(f, p, l, u, i)) && o.reparse && (f = f.slice(0, l) + o.output + f.slice(l + o.matchLength)); while (o && o.reparse); if (o) c += o.output, l += o.matchLength || 1; else { var y = nt.exec(f, Si[u], l, "sticky")[0]; c += y, l += y.length, y === "[" && u === "default" ? u = "class" : y === "]" && u === "class" && (u = "default") } } Tr[n][r] = { pattern: Lt.replace.call(c, /(?:\(\?:\))+/g, "(?:)"), flags: Lt.replace.call(p, /[^gimuy]+/g, ""), captures: i.hasNamedCapture ? i.captureNames : null } } var _ = Tr[n][r]; return ao(new RegExp(_.pattern, _.flags), _.captures, n, r) } nt.prototype = new RegExp, nt.version = "3.1.1-next", nt._clipDuplicates = Jr, nt._hasNativeFlag = Zn, nt._dec = Ue, nt._hex = Pe, nt._pad4 = qe, nt.addToken = function (n, r, o) { var i, u = (o = o || {}).optionalFlags; if (o.flag && Fe(o.flag), u) for (u = Lt.split.call(u, ""), i = 0; i < u.length; ++i)Fe(u[i]); Fn.push({ regex: Rr(n, { addG: !0, addY: Yn, isInternalOnly: !0 }), handler: r, scope: o.scope || "default", flag: o.flag, reparse: o.reparse, leadChar: o.leadChar }), nt.cache.flush("patterns") }, nt.cache = function (n, r) { return Zr[n] || (Zr[n] = {}), Zr[n][r] || (Zr[n][r] = nt(n, r)) }, nt.cache.flush = function (n) { n === "patterns" ? Tr = {} : Zr = {} }, nt.exec = function (n, r, o, i) { var u, c, l, s = "g", f = !1; return (u = Yn && !!(i || r.sticky && i !== !1)) ? s += "y" : i && (f = !0, s += "FakeY"), r.xregexp = r.xregexp || {}, o = o || 0, (l = r.xregexp[s] || (r.xregexp[s] = Rr(r, { addG: !0, addY: u, source: f ? r.source + "|()" : void 0, removeY: i === !1, isInternalOnly: !0 }))).lastIndex = o, c = Wr.exec.call(l, n), f && c && c.pop() === "" && (c = null), r.global && (r.lastIndex = c ? l.lastIndex : 0), c }, nt.isInstalled = function (n) { return !!Li[n] }, nt.isRegExp = function (n) { return $e.call(n) === "[object RegExp]" }, nt.replace = function (n, r, o, i) { var u, c = nt.isRegExp(r), l = r.global && i !== "one" || i === "all", s = (l ? "g" : "") + (r.sticky ? "y" : "") || "noGY", f = r; return c ? (r.xregexp = r.xregexp || {}, f = r.xregexp[s] || (r.xregexp[s] = Rr(r, { addG: !!l, removeG: i === "one", isInternalOnly: !0 }))) : l && (f = new RegExp(nt.escape(String(r)), "g")), u = Wr.replace.call(function (y) { if (y == null) throw new TypeError("Cannot convert null or undefined to object"); return y }(n), f, o), c && r.global && (r.lastIndex = 0), u }, Wr.exec = function (n) { var r, o, i, u = this.lastIndex, c = Lt.exec.apply(this, arguments); if (c) { if (!xi && c.length > 1 && sn(c, "") > -1 && (o = Rr(this, { removeG: !0, isInternalOnly: !0 }), Lt.replace.call(String(n).slice(c.index), o, function () { var l, s = arguments.length; for (l = 1; l < s - 2; ++l)arguments[l] === void 0 && (c[l] = void 0) })), this.xregexp && this.xregexp.captureNames) for (i = 1; i < c.length; ++i)(r = this.xregexp.captureNames[i - 1]) && (c[r] = c[i]); this.global && !c[0].length && this.lastIndex > c.index && (this.lastIndex = c.index) } return this.global || (this.lastIndex = u), c }, Wr.replace = function (n, r) { var o, i, u, c = nt.isRegExp(n); return c ? (n.xregexp && (i = n.xregexp.captureNames), o = n.lastIndex) : n += "", u = function (s, f) { return $e.call(s) === "[object " + f + "]" }(r, "Function") ? Lt.replace.call(String(this), n, function () { var l, s = arguments; if (i) for (s[0] = new String(s[0]), l = 0; l < i.length; ++l)i[l] && (s[0][i[l]] = s[l + 1]); return c && n.global && (n.lastIndex = s[s.length - 2] + s[0].length), r.apply(void 0, s) }) : Lt.replace.call(this == null ? this : String(this), n, function () { var l = arguments; return Lt.replace.call(String(r), zi, function (s, f, p) { var y; if (f) { if ((y = +f) <= l.length - 3) return l[y] || ""; if ((y = i ? sn(i, f) : -1) < 0) throw new SyntaxError("Backreference to undefined group " + s); return l[y + 1] || "" } if (p === "$") return "$"; if (p === "&" || +p == 0) return l[0]; if (p === "`") return l[l.length - 1].slice(0, l[l.length - 2]); if (p === "'") return l[l.length - 1].slice(l[l.length - 2] + l[0].length); if (p = +p, !isNaN(p)) { if (p > l.length - 3) throw new SyntaxError("Backreference to undefined group " + s); return l[p] || "" } throw new SyntaxError("Invalid token " + s) }) }), c && (n.global ? n.lastIndex = 0 : n.lastIndex = o), u }, Wr.split = function (n, r) { if (!nt.isRegExp(n)) return Lt.split.apply(this, arguments); var o, i = String(this), u = [], c = n.lastIndex, l = 0; return r = (r === void 0 ? -1 : r) >>> 0, nt.forEach(i, n, function (s) { s.index + s[0].length > l && (u.push(i.slice(l, s.index)), s.length > 1 && s.index < i.length && Array.prototype.push.apply(u, s.slice(1)), o = s[0].length, l = s.index + o) }), l === i.length ? Lt.test.call(n, "") && !o || u.push("") : u.push(i.slice(l)), n.lastIndex = c, u.length > r ? u.slice(0, r) : u }, nt.addToken(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4}|{[\dA-Fa-f]+})|x(?![\dA-Fa-f]{2}))/, function (n, r) { if (n[1] === "B" && r === "default") return n[0]; throw new SyntaxError("Invalid escape " + n[0]) }, { scope: "all", leadChar: "\\" }), nt.addToken(/\\u{([\dA-Fa-f]+)}/, function (n, r, o) { var i = Ue(n[1]); if (i > 1114111) throw new SyntaxError("Invalid Unicode code point " + n[0]); if (i <= 65535) return "\\u" + qe(Pe(i)); if (oo && o.indexOf("u") > -1) return n[0]; throw new SyntaxError("Cannot use Unicode code point above \\u{FFFF} without flag u") }, { scope: "all", leadChar: "\\" }), nt.addToken(/\[(\^?)\]/, function (n) { return n[1] ? "[\\s\\S]" : "\\b\\B" }, { leadChar: "[" }), nt.addToken(/\(\?#[^)]*\)/, function (n, r, o) { return Be(n.input, n.index + n[0].length, o) ? "" : "(?:)" }, { leadChar: "(" }), nt.addToken(/\s+|#[^\n]*\n?/, function (n, r, o) { return Be(n.input, n.index + n[0].length, o) ? "" : "(?:)" }, { flag: "x" }), nt.addToken(/\./, function () { return "[\\s\\S]" }, { flag: "s", leadChar: "." }), nt.addToken(/\\k<([\w$]+)>/, function (n) { var r = isNaN(n[1]) ? sn(this.captureNames, n[1]) + 1 : +n[1], o = n.index + n[0].length; if (!r || r > this.captureNames.length) throw new SyntaxError("Backreference to undefined group " + n[0]); return "\\" + r + (o === n.input.length || isNaN(n.input.charAt(o)) ? "" : "(?:)") }, { leadChar: "\\" }), nt.addToken(/\\(\d+)/, function (n, r) { if (!(r === "default" && /^[1-9]/.test(n[1]) && +n[1] <= this.captureNames.length) && n[1] !== "0") throw new SyntaxError("Cannot use octal escape or backreference to undefined group " + n[0]); return n[0] }, { scope: "all", leadChar: "\\" }), nt.addToken(/\(\?P?<([\w$]+)>/, function (n) { if (!isNaN(n[1])) throw new SyntaxError("Cannot use integer as capture name " + n[0]); if (n[1] === "length" || n[1] === "__proto__") throw new SyntaxError("Cannot use reserved word as capture name " + n[0]); if (sn(this.captureNames, n[1]) > -1) throw new SyntaxError("Cannot use same name for multiple groups " + n[0]); return this.captureNames.push(n[1]), this.hasNamedCapture = !0, "(" }, { leadChar: "(" }), nt.addToken(/\((?!\?)/, function (n, r, o) { return o.indexOf("n") > -1 ? "(?:" : (this.captureNames.push(null), "(") }, { optionalFlags: "n", leadChar: "(" }); var Qn = nt;/*! - * XRegExp Unicode Base 3.1.1-next - * - * Steven Levithan (c) 2008-2016 MIT License - */(function (n) { var r = {}, o = n._dec, i = n._hex, u = n._pad4; function c(f) { return f.replace(/[- _]+/g, "").toLowerCase() } function l(f) { var p = /^\\[xu](.+)/.exec(f); return p ? o(p[1]) : f.charCodeAt(f.charAt(0) === "\\" ? 1 : 0) } function s(f) { return r[f]["b!"] || (r[f]["b!"] = function (y) { var _ = "", M = -1; return n.forEach(y, /(\\x..|\\u....|\\?[\s\S])(?:-(\\x..|\\u....|\\?[\s\S]))?/, function (k) { var S = l(k[1]); S > M + 1 && (_ += "\\u" + u(i(M + 1)), S > M + 2 && (_ += "-\\u" + u(i(S - 1)))), M = l(k[2] || k[1]) }), M < 65535 && (_ += "\\u" + u(i(M + 1)), M < 65534 && (_ += "-\\uFFFF")), _ }(r[f].bmp)) } n.addToken(/\\([pP])(?:{(\^?)([^}]*)}|([A-Za-z]))/, function (f, p, y) { var _ = f[1] === "P" || !!f[2], M = c(f[4] || f[3]), k = r[M]; if (f[1] === "P" && f[2]) throw new SyntaxError("Invalid double negation " + f[0]); if (!r.hasOwnProperty(M)) throw new SyntaxError("Unknown Unicode token " + f[0]); if (k.inverseOf) { if (M = c(k.inverseOf), !r.hasOwnProperty(M)) throw new ReferenceError("Unicode token missing data " + f[0] + " -> " + k.inverseOf); k = r[M], _ = !_ } if (!k.bmp) throw new SyntaxError("Astral mode required for Unicode token " + f[0]); return p === "class" ? _ ? s(M) : k.bmp : (_ ? "[^" : "[") + k.bmp + "]" }, { scope: "all", optionalFlags: "A", leadChar: "\\" }), n.addUnicodeData = function (f) { for (var p, y = 0; y < f.length; ++y) { if (!(p = f[y]).name) throw new Error("Unicode token requires name"); if (!(p.inverseOf || p.bmp || p.astral)) throw new Error("Unicode token has no character data " + p.name); r[c(p.name)] = p, p.alias && (r[c(p.alias)] = p) } n.cache.flush("patterns") }, n._getUnicodeProperty = function (f) { var p = c(f); return r[p] } })(Qn), function (n) { if (!n.addUnicodeData) throw new ReferenceError("Unicode Base must be loaded before Unicode Categories"); n.addUnicodeData([{ name: "L", alias: "Letter", bmp: "A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢄᢇ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿯ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞿꟂ-Ᶎꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭧꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ" }, { name: "N", alias: "Number", bmp: "0-9²³¹¼-¾٠-٩۰-۹߀-߉०-९০-৯৴-৹੦-੯૦-૯୦-୯୲-୷௦-௲౦-౯౸-౾೦-೯൘-൞൦-൸෦-෯๐-๙໐-໙༠-༳၀-၉႐-႙፩-፼ᛮ-ᛰ០-៩៰-៹᠐-᠙᥆-᥏᧐-᧚᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙⁰⁴-⁹₀-₉⅐-ↂↅ-↉①-⒛⓪-⓿❶-➓⳽〇〡-〩〸-〺㆒-㆕㈠-㈩㉈-㉏㉑-㉟㊀-㊉㊱-㊿꘠-꘩ꛦ-ꛯ꠰-꠵꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹0-9" }]) }(Qn); var Di = Qn, Ye = { exports: {} }; (function (n) { n.exports = function (r, o, i, u) { return (n = {}).dedupe = function (l, s) { var f, p = r(s); if (!o(l) && typeof l != "object") throw new Error("contains_dupes must be an array or object"); if (Object.keys(l).length === 0) return typeof console !== void 0 && console.warn("contains_dupes is empty"), []; p.limit && (typeof console !== void 0 && console.warn("options.limit will be ignored in dedupe"), p.limit = 0), p.cutoff && typeof p.cutoff == "number" || (typeof console !== void 0 && console.warn("Using default cutoff of 70"), p.cutoff = 70), p.scorer || (p.scorer = i, typeof console !== void 0 && console.log("Using default scorer 'ratio' for dedupe")), f = p.processor && typeof p.processor == "function" ? p.processor : function (h) { return h }; var y = {}; for (var _ in l) { var M = f(l[_]); if (typeof M != "string" && !(M instanceof String)) throw new Error("Each processed item in dedupe must be a string."); var k = u(M, l, p); p.returnObjects ? (k.length === 1 || (k = k.sort(function (h, b) { var I = f(h.choice), F = f(b.choice), B = I.length, U = F.length; return B === U ? I < F ? -1 : 1 : U - B })), p.keepmap ? y[f(k[0].choice)] = { item: k[0].choice, key: k[0].key, matches: k } : y[f(k[0].choice)] = { item: k[0].choice, key: k[0].key }) : (k.length === 1 || (k = k.sort(function (h, b) { var I = f(h[0]), F = f(b[0]), B = I.length, U = F.length; return B === U ? I < F ? -1 : 1 : U - B })), p.keepmap ? y[f(k[0][0])] = [k[0][0], k[0][2], k] : y[f(k[0][0])] = [k[0][0], k[0][2]]) } var S = []; for (var d in y) S.push(y[d]); return S }, n } })(Ye), function () { var n = ki, r = Ni, o = Pt.exports.intersection, i = Pt.exports.intersectionWith, u = Pt.exports.difference, c = Pt.exports.differenceWith, l = Pt.exports.uniq, s = Pt.exports.uniqWith, f = Pt.exports.partialRight, p = Pt.exports.forEach, y = Pt.exports.keys, _ = Pt.exports.isArray, M = Pt.exports.toArray, k = Pt.exports.orderBy, S = Ii, d = Ce, h = Oe, b = function (A, j, z) { var x = {}, v = Di, J = Ce, T = Oe; function rt(P) { return P.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") } function ut(P) { return (typeof P == "string" || P instanceof String) && P.length > 0 } x.validate = ut, x.process_and_sort = function ($) { return ut($) ? $.match(/\S+/g).sort().join(" ").trim() : "" }, x.tokenize = function ($, G) { if (G && G.wildcards && j && z) { var q = z(J, G, T); return j($.match(/\S+/g), function (W, ht) { return q(W, ht) === 0 }) } return A($.match(/\S+/g)) }; var H = v("[^\\pN|\\pL]", "g"); return x.full_process = function ($, G) { if (!($ instanceof String) && typeof $ != "string") return ""; var q; if (G && typeof G == "object" && G.wildcards && typeof G.wildcards == "string" && G.wildcards.length > 0) { var W = G.wildcards.toLowerCase(); if ($ = $.toLowerCase(), G.force_ascii) { var ht = "[^\0 -|" + rt(W) + "]"; $ = $.replace(new RegExp(ht, "g"), ""); var bt = "[" + rt(W) + "]", ct = W[0]; $ = $.replace(new RegExp(bt, "g"), ct); var tt = "[^A-Za-z0-9" + rt(W) + "]"; q = ($ = ($ = $.replace(new RegExp(tt, "g"), " ")).replace(/_/g, " ")).trim() } else { var mt = "[^\\pN|\\pL|" + rt(W) + "]", Yt = v(mt, "g"); $ = v.replace($, Yt, " ", "all"), bt = "[" + rt(W) + "]", ct = W[0], q = ($ = $.replace(new RegExp(bt, "g"), ct)).trim() } } else G && (G.force_ascii || G === !0) && (q = ($ = $.replace(/[^\x00-\x7F]/g, "")).replace(/\W|_/g, " ").toLowerCase().trim()), q = v.replace($, H, " ", "all").toLowerCase().trim(); return G && G.collapseWhitespace && (q = q.replace(/\s+/g, " ")), q }, x.clone_and_set_option_defaults = function (P) { if (P && P.isAClone) return P; var $ = { isAClone: !0 }; if (P) { var G, q = Object.keys(P); for (G = 0; G < q.length; G++)$[q[G]] = P[q[G]] } return $.full_process !== void 0 && $.full_process === !1 || ($.full_process = !0), $.force_ascii !== void 0 && $.force_ascii === !0 || ($.force_ascii = !1), $.normalize !== void 0 && $.normalize === !1 || ($.normalize = !0), $.astral !== void 0 && $.astral === !0 && ($.full_process = !1), $.collapseWhitespace !== void 0 && $.collapseWhitespace === !1 || ($.collapseWhitespace = !0), $ }, x.isCustomFunc = function (P) { return typeof P != "function" || P.name !== "token_set_ratio" && P.name !== "partial_token_set_ratio" && P.name !== "token_sort_ratio" && P.name !== "partial_token_sort_ratio" && P.name !== "QRatio" && P.name !== "WRatio" && P.name !== "distance" && P.name !== "partial_ratio" }, x }(l, s, f), I = b.validate, F = b.process_and_sort, B = b.tokenize, U = b.full_process, X = b.clone_and_set_option_defaults, lt = b.isCustomFunc, dt = Ye.exports(X, _, gt, sr).dedupe; function gt(A, j, z) { var x = X(z); return A = x.full_process ? U(A, x) : A, j = x.full_process ? U(j, x) : j, I(A) && I(j) ? Zt(A, j, x) : 0 } function wt(A, j, z) { var x = X(z); return A = x.full_process ? U(A, x) : A, j = x.full_process ? U(j, x) : j, I(A) && I(j) ? zt(A, j, x) : 0 } function jt(A, j, z) { var x = X(z); return A = x.full_process ? U(A, x) : A, j = x.full_process ? U(j, x) : j, I(A) && I(j) ? (x.partial = !0, zt(A, j, x)) : 0 } function Et(A, j, z) { var x = X(z); return A = x.full_process ? U(A, x) : A, j = x.full_process ? U(j, x) : j, I(A) && I(j) ? (x.proc_sorted || (A = F(A), j = F(j)), Zt(A, j, x)) : 0 } function Bt(A, j, z) { var x = X(z); return A = x.full_process ? U(A, x) : A, j = x.full_process ? U(j, x) : j, I(A) && I(j) ? (x.partial = !0, x.proc_sorted || (A = F(A), j = F(j)), Ot(A, j, x)) : 0 } function sr(A, j, z) { var x, v = X(z); if (_(j)) x = j.length; else { if (!(j instanceof Object)) throw new Error("Invalid choices"); x = y(j).length } if (!j || x === 0) return typeof console !== void 0 && console.warn("No choices"), []; if (v.processor && typeof v.processor != "function") throw new Error("Invalid Processor"); if (v.processor || (v.processor = function (tt) { return tt }), v.scorer && typeof v.scorer != "function") throw new Error("Invalid Scorer"); v.scorer || (v.scorer = gt); var J = lt(v.scorer); v.cutoff && typeof v.cutoff == "number" || (v.cutoff = -1); var T = function (tt, mt) { return tt }; v.full_process && (T = U, J || (v.processed = !0)); var rt = !1; J || (A = T(A, v), v.full_process = !1, v.astral && v.normalize && (v.normalize = !1, String.prototype.normalize ? (rt = !0, A = A.normalize()) : typeof console !== void 0 && console.warn("Normalization not supported in your environment")), A.length === 0 && typeof console !== void 0 && console.warn("Processed query is empty string")); var ut, H, P, $, G = [], q = !1, W = !1, ht = !1; if (v.scorer.name === "token_sort_ratio" || v.scorer.name === "partial_token_sort_ratio") { var bt = F(A); W = !0 } else if (v.scorer.name === "token_set_ratio" || v.scorer.name === "partial_token_set_ratio") { var ct = B(A, v); ht = !0 } return v.returnObjects ? (P = function (tt, mt) { return tt.score - mt.score }, $ = function (tt, mt) { return mt.score - tt.score }) : (P = function (tt, mt) { return tt[1] - mt[1] }, $ = function (tt, mt) { return mt[1] - tt[1] }), p(j, function (tt, mt) { v.tokens = void 0, v.proc_sorted = !1, W ? (v.proc_sorted = !0, tt && tt.proc_sorted ? H = tt.proc_sorted : (H = T(v.processor(tt), v), H = F(rt ? H.normalize() : H)), ut = v.scorer(bt, H, v)) : ht ? (H = "x", tt && tt.tokens ? (v.tokens = [ct, tt.tokens], v.trySimple && (H = T(v.processor(tt), v))) : (H = T(v.processor(tt), v), v.tokens = [ct, B(rt ? H.normalize() : H, v)]), ut = v.scorer(A, H, v)) : J ? (H = v.processor(tt), ut = v.scorer(A, H, v)) : (typeof (H = T(v.processor(tt), v)) == "string" && H.length !== 0 || (q = !0), rt && typeof H == "string" && (H = H.normalize()), ut = v.scorer(A, H, v)), ut > v.cutoff && (v.returnObjects ? G.push({ choice: tt, score: ut, key: mt }) : G.push([tt, ut, mt])) }), q && typeof console !== void 0 && console.log("One or more choices were empty. (post-processing if applied)"), v.limit && typeof v.limit == "number" && v.limit > 0 && v.limit < x && !v.unsorted ? G = r.nlargest(G, v.limit, P) : v.unsorted || (G = G.sort($)), G } function er(A, j, z, x) { var v, J, T = X(z); typeof z.abortController == "object" && (v = z.abortController), typeof z.cancelToken == "object" && (J = z.cancelToken); var rt = 256; typeof T.asyncLoopOffset == "number" && (rt = T.asyncLoopOffset < 1 ? 1 : T.asyncLoopOffset); var ut, H = !1; if (j && j.length && _(j)) ut = j.length, H = !0; else { if (!(j instanceof Object)) return void x(new Error("Invalid choices")); ut = Object.keys(j).length } if (!j || ut === 0) return typeof console !== void 0 && console.warn("No choices"), void x(null, []); if (T.processor && typeof T.processor != "function") x(new Error("Invalid Processor")); else if (T.processor || (T.processor = function (it) { return it }), T.scorer && typeof T.scorer != "function") x(new Error("Invalid Scorer")); else { T.scorer || (T.scorer = gt); var P = lt(T.scorer); T.cutoff && typeof T.cutoff == "number" || (T.cutoff = -1); var $ = function (it, kt) { return it }; T.full_process && ($ = U, P || (T.processed = !0)); var G = !1; P || (A = $(A, T), T.full_process = !1, T.astral && T.normalize && (T.normalize = !1, String.prototype.normalize ? (G = !0, A = A.normalize()) : typeof console !== void 0 && console.warn("Normalization not supported in your environment")), A.length === 0 && typeof console !== void 0 && console.warn("Processed query is empty string")); var q, W, ht, bt, ct, tt = [], mt = !1, Yt = !1, ir = !1; if (T.scorer.name === "token_sort_ratio" || T.scorer.name === "partial_token_sort_ratio") { var Jt = F(A); Yt = !0 } else if (T.scorer.name === "token_set_ratio" || T.scorer.name === "partial_token_set_ratio") { var Nr = B(A, T); ir = !0 } T.returnObjects ? (bt = function (it, kt) { return it.score - kt.score }, ct = function (it, kt) { return kt.score - it.score }) : (bt = function (it, kt) { return it[1] - kt[1] }, ct = function (it, kt) { return kt[1] - it[1] }); var dr = Object.keys(j); H ? fr(0) : fr(dr[0], 0) } function fr(it, kt) { (H || j.hasOwnProperty(it)) && (T.tokens = void 0, T.proc_sorted = !1, Yt ? (T.proc_sorted = !0, j[it] && j[it].proc_sorted ? W = j[it].proc_sorted : (W = $(T.processor(j[it]), T), W = F(G ? W.normalize() : W)), ht = T.scorer(Jt, W, T)) : ir ? (W = "x", j[it] && j[it].tokens ? (T.tokens = [Nr, j[it].tokens], T.trySimple && (W = $(T.processor(j[it]), T))) : (W = $(T.processor(j[it]), T), T.tokens = [Nr, B(G ? W.normalize() : W, T)]), ht = T.scorer(A, W, T)) : P ? (W = T.processor(j[it]), ht = T.scorer(A, W, T)) : (typeof (W = $(T.processor(j[it]), T)) == "string" && W.length !== 0 || (mt = !0), G && typeof W == "string" && (W = W.normalize()), ht = T.scorer(A, W, T)), q = H ? parseInt(it) : it, ht > T.cutoff && (T.returnObjects ? tt.push({ choice: j[it], score: ht, key: q }) : tt.push([j[it], ht, q]))), v && v.signal.aborted === !0 ? x(new Error("aborted")) : J && J.canceled === !0 ? x(new Error("canceled")) : H && it < j.length - 1 ? it % rt == 0 ? setImmediate(function () { fr(it + 1) }) : fr(it + 1) : kt < dr.length - 1 ? kt % rt == 0 ? setImmediate(function () { fr(dr[kt + 1], kt + 1) }) : fr(dr[kt + 1], kt + 1) : (mt && typeof console !== void 0 && console.log("One or more choices were empty. (post-processing if applied)"), T.limit && typeof T.limit == "number" && T.limit > 0 && T.limit < ut && !T.unsorted ? tt = r.nlargest(tt, T.limit, bt) : T.unsorted || (tt = tt.sort(ct)), x(null, tt)) } } var Ct = "%*SuperUniqueWildcardKey*%", Vt = !1; function qt(A, j) { var z = A; if (j.astral) { j.normalize && (String.prototype.normalize ? z = A.normalize() : Vt || (typeof console !== void 0 && console.warn("Normalization not supported in your environment"), Vt = !0)); var x = M(z) } else x = z.split(""); var v = {}; if (j.wildcards) for (var J = 0; J < x.length; J++) { var T = x[J]; j.wildcards.indexOf(T) > -1 ? v[Ct] ? v[Ct] += 1 : v[Ct] = 1 : v[T] ? v[T] += 1 : v[T] = 1 } else for (J = 0; J < x.length; J++)v[T = x[J]] ? v[T] += 1 : v[T] = 1; return v } function Gt(A, j, z) { for (var x = j, v = A.reduce(function (H, P) { return H[P] = qt(P, z), H }, {}), J = x.reduce(function (H, P) { return H[P] = qt(P, z), H }, {}), T = [], rt = 0; x.length && rt < A.length;) { var ut = k(x, function (H) { return P = v[A[rt]], $ = J[H], G = Object.keys(P), q = Object.keys($), W = o(G, q).map(function (ct) { return P[ct] * $[ct] }).reduce(function (ct, tt) { return ct + tt }, 0), ht = G.map(function (ct) { return Math.pow(P[ct], 2) }).reduce(function (ct, tt) { return ct + tt }, 0), bt = q.map(function (ct) { return Math.pow($[ct], 2) }).reduce(function (ct, tt) { return ct + tt }, 0), W / (Math.sqrt(ht) * Math.sqrt(bt)); var P, $, G, q, W, ht, bt }, "desc")[0]; T.push(ut), rt++, x = x.filter(function (H) { return H !== ut }) } return T.concat(x) } function gr(A, j, z, x) { var v = j, J = x; return (j.length > x.length || j.length === x.length && (A.length > z.length || [A, z].sort()[0] === z)) && (v = x, J = j), [v, J] } function or(A, j, z) { if (z.tokens) x = z.tokens[0], v = z.tokens[1]; else var x = B(A, z), v = B(j, z); var J = gr(A, x.sort(), j, v.sort()), T = J[0]; const rt = Gt(T, J[1], z); return z.partial ? Ot(T.join(" "), rt.join(" "), z) : Zt(T.join(" "), rt.join(" "), z) } function zt(A, j, z) { if (z.tokens) x = z.tokens[0], v = z.tokens[1]; else var x = B(A, z), v = B(j, z); if (z.wildcards) var J = f(d, z, h), T = function (Jt, Nr) { return J(Jt, Nr) === 0 }, rt = i(x, v, T), ut = c(x, v, T), H = c(v, x, T); else rt = o(x, v), ut = u(x, v), H = u(v, x); var P = rt.sort().join(" "), $ = ut.sort(), G = H.sort(); if (z.sortBySimilarity) var q = gr(A, $, j, G), W = q[0], ht = q[1], bt = W.join(" "), ct = Gt(W, ht, z).join(" "); else bt = $.join(" "), ct = G.join(" "); var tt = P + " " + bt, mt = P + " " + ct; P = P.trim(), tt = tt.trim(), mt = mt.trim(); var Yt = Zt; if (z.partial && (Yt = Ot, P.length > 0)) return 100; var ir = [Yt(P, tt, z), Yt(P, mt, z), Yt(tt, mt, z)]; return z.trySimple && ir.push(Yt(A, j, z)), Math.max.apply(null, ir) } var lr, pr, Wt, Ft, ur = !1; function Zt(A, j, z) { if (!I(A) || !I(j)) return 0; if (z.ratio_alg && z.ratio_alg === "difflib") { var x = new n(null, A, j).ratio(); return Math.round(100 * x) } var v, J; return z.subcost === void 0 && (z.subcost = 2), z.astral ? (z.normalize && (String.prototype.normalize ? (A = A.normalize(), j = j.normalize()) : ur || (typeof console !== void 0 && console.warn("Normalization not supported in your environment"), ur = !0)), v = S(A, j, z, M), J = M(A).length + M(j).length) : z.wildcards ? (v = d(A, j, z, h), J = A.length + j.length) : (v = h(A, j, z), J = A.length + j.length), Math.round((J - v) / J * 100) } function Ot(A, j, z) { if (!I(A) || !I(j)) return 0; if (A.length <= j.length) var x = A, v = j; else x = j, v = A; for (var J = new n(null, x, v).getMatchingBlocks(), T = [], rt = 0; rt < J.length; rt++) { var ut = J[rt][1] - J[rt][0] > 0 ? J[rt][1] - J[rt][0] : 0, H = ut + x.length, P = Zt(x, v.substring(ut, H), z); if (P > 99.5) return 100; T.push(P) } return Math.max.apply(null, T) } Object.keys || (Object.keys = (lr = Object.prototype.hasOwnProperty, pr = !{ toString: null }.propertyIsEnumerable("toString"), Ft = (Wt = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"]).length, function (A) { if (typeof A != "object" && (typeof A != "function" || A === null)) throw new TypeError("Object.keys called on non-object"); var j, z, x = []; for (j in A) lr.call(A, j) && x.push(j); if (pr) for (z = 0; z < Ft; z++)lr.call(A, Wt[z]) && x.push(Wt[z]); return x })); var $t = void 0; typeof Promise < "u" && ($t = function (A, j, z) { return new Promise(function (x, v) { er(A, j, z, function (J, T) { J ? v(J) : x(T) }) }) }); var cr = { distance: function (j, z, x) { var v = X(x); return j = v.full_process ? U(j, v) : j, z = v.full_process ? U(z, v) : z, v.subcost === void 0 && (v.subcost = 1), v.astral ? S(j, z, v, M) : d(j, z, v, h) }, ratio: gt, partial_ratio: function (j, z, x) { var v = X(x); return j = v.full_process ? U(j, v) : j, z = v.full_process ? U(z, v) : z, I(j) && I(z) ? Ot(j, z, v) : 0 }, token_set_ratio: wt, token_sort_ratio: Et, partial_token_set_ratio: jt, partial_token_sort_ratio: Bt, token_similarity_sort_ratio: function (j, z, x) { var v = X(x); return j = v.full_process ? U(j, v) : j, z = v.full_process ? U(z, v) : z, I(j) && I(z) ? or(j, z, v) : 0 }, partial_token_similarity_sort_ratio: function (j, z, x) { var v = X(x); return j = v.full_process ? U(j, v) : j, z = v.full_process ? U(z, v) : z, I(j) && I(z) ? (v.partial = !0, or(j, z, v)) : 0 }, WRatio: function (j, z, x) { var v = X(x); if (j = v.full_process ? U(j, v) : j, z = v.full_process ? U(z, v) : z, v.full_process = !1, !I(j) || !I(z)) return 0; var J = !0, T = .95, rt = .9, ut = Zt(j, z, v), H = Math.max(j.length, z.length) / Math.min(j.length, z.length); if (H < 1.5 && (J = !1), H > 8 && (rt = .6), J) { var P = Ot(j, z, v) * rt, $ = Bt(j, z, v) * T * rt, G = jt(j, z, v) * T * rt; return Math.round(Math.max(ut, P, $, G)) } var q = Et(j, z, v) * T, W = wt(j, z, v) * T; return Math.round(Math.max(ut, q, W)) }, full_process: U, extract: sr, extractAsync: er, extractAsPromised: $t, process_and_sort: F, unique_tokens: B, dedupe: dt }; no.exports = cr }(); var St = no.exports; St.distance; St.ratio; St.partial_ratio; St.token_set_ratio; St.token_sort_ratio; St.partial_token_set_ratio; St.partial_token_sort_ratio; St.token_similarity_sort_ratio; St.partial_token_similarity_sort_ratio; St.WRatio; St.full_process; const Ei = St.extract; St.extractAsync; St.extractAsPromised; St.process_and_sort; St.unique_tokens; St.dedupe; function Qe(n, r, o) { const i = n.slice(); return i[9] = r[o], i } function Ge(n) { let r, o = n[4].sort(), i = []; for (let u = 0; u < o.length; u += 1)i[u] = We(Qe(n, o, u)); return { c() { for (let u = 0; u < i.length; u += 1)i[u].c(); r = Ve() }, m(u, c) { for (let l = 0; l < i.length; l += 1)i[l] && i[l].m(u, c); pt(u, r, c) }, p(u, c) { if (c & 22) { o = u[4].sort(); let l; for (l = 0; l < o.length; l += 1) { const s = Qe(u, o, l); i[l] ? i[l].p(s, c) : (i[l] = We(s), i[l].c(), i[l].m(r.parentNode, r)) } for (; l < i.length; l += 1)i[l].d(1); i.length = o.length } }, d(u) { Xo(i, u), u && st(r) } } } function We(n) { let r, o, i = n[1](n[9].replaceAll("-", " ")) + "", u, c, l, s = n[2][n[9]] + "", f, p, y; return { c() { r = K("a"), o = K("h1"), u = ft(i), c = at(), l = K("h2"), f = ft(s), p = at(), Y(o, "class", "svelte-tubwpm"), Y(l, "class", "svelte-tubwpm"), Y(r, "id", "card"), Y(r, "href", y = "#" + n[9]), Y(r, "class", "svelte-tubwpm") }, m(_, M) { pt(_, r, M), C(r, o), C(o, u), C(r, c), C(r, l), C(l, f), C(r, p) }, p(_, M) { M & 18 && i !== (i = _[1](_[9].replaceAll("-", " ")) + "") && Ht(u, i), M & 20 && s !== (s = _[2][_[9]] + "") && Ht(f, s), M & 16 && y !== (y = "#" + _[9]) && Y(r, "href", y) }, d(_) { _ && st(r) } } } function Ci(n) { let r, o, i, u, c, l, s, f, p, y, _ = n[4] != null && Ge(n); return { c() { r = K("main"), o = K("div"), i = K("img"), c = at(), l = K("input"), s = at(), f = K("div"), _ && _.c(), Y(i, "title", "Back"), Y(i, "alt", "arrow"), Gn(i.src, u = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIGZpbGw9IiMwMDAwMDAiIHZlcnNpb249IjEuMSIgaWQ9IkNhcGFfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgDQoJIHdpZHRoPSI4MDBweCIgaGVpZ2h0PSI4MDBweCIgdmlld0JveD0iMCAwIDU1OC45NTcgNTU4Ljk1NyINCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8Zz4NCgkJPHBvbHlnb24gcG9pbnRzPSI0NjIuNzQ1LDAgOTYuMjEyLDI3OS40NzkgNDYyLjc0NSw1NTguOTU3IDQ2Mi43NDUsNDE5LjIyMSAyNzguNzEzLDI3OS40NzkgNDYyLjc0NSwxMzkuNzM4IAkJIi8+DQoJPC9nPg0KPC9nPg0KPC9zdmc+") || Y(i, "src", u), Y(i, "class", "svelte-tubwpm"), Y(l, "type", "text"), Y(l, "name", "search"), Y(l, "placeholder", "Search"), Y(l, "autocomplete", "off"), Y(l, "class", "svelte-tubwpm"), Y(o, "id", "search"), Y(o, "class", "svelte-tubwpm"), Y(f, "id", "cards"), Y(f, "class", "svelte-tubwpm"), Y(r, "class", "svelte-tubwpm") }, m(M, k) { pt(M, r, k), C(r, o), C(o, i), C(o, c), C(o, l), xe(l, n[3]), C(r, s), C(r, f), _ && _.m(f, null), p || (y = [pn(i, "click", n[5]), pn(l, "input", n[6])], p = !0) }, p(M, [k]) { k & 8 && l.value !== M[3] && xe(l, M[3]), M[4] != null ? _ ? _.p(M, k) : (_ = Ge(M), _.c(), _.m(f, null)) : _ && (_.d(1), _ = null) }, i: nr, o: nr, d(M) { M && st(r), _ && _.d(), p = !1, Cr(y) } } } function Oi(n, r, o) { let { search: i = !0 } = r, { prettify: u } = r, { packages: c } = r, l = Object.keys(c), s, f = "", p; setInterval(() => { if (s == f) return; if (f = s, f == null || f == "") { o(4, p = l); return } let M = Ei(s, l); o(4, p = []), M.forEach(k => { k[1] > 50 && p.push(k[0]) }) }, 1); const y = () => { o(0, i = !1) }; function _() { s = this.value, o(3, s) } return n.$$set = M => { "search" in M && o(0, i = M.search), "prettify" in M && o(1, u = M.prettify), "packages" in M && o(2, c = M.packages) }, [i, u, c, s, p, y, _] } class $i extends Ur { constructor(r) { super(), $r(this, r, Oi, Ci, Or, { search: 0, prettify: 1, packages: 2 }) } } function Ui(n) { let r, o; return r = new mi({ props: { pkginfo: n[1], prettify: n[6], sourcelink: "https://github.com/" + n[4] + "/tree/" + n[2] + (n[3] != null ? "/" + n[3] : "") } }), { c() { ar(r.$$.fragment) }, m(i, u) { tr(r, i, u), o = !0 }, p(i, u) { const c = {}; u & 2 && (c.pkginfo = i[1]), u & 28 && (c.sourcelink = "https://github.com/" + i[4] + "/tree/" + i[2] + (i[3] != null ? "/" + i[3] : "")), r.$set(c) }, i(i) { o || (At(r.$$.fragment, i), o = !0) }, o(i) { Dt(r.$$.fragment, i), o = !1 }, d(i) { rr(r, i) } } } function Pi(n) { let r, o; return r = new Mi({}), { c() { ar(r.$$.fragment) }, m(i, u) { tr(r, i, u), o = !0 }, p: nr, i(i) { o || (At(r.$$.fragment, i), o = !0) }, o(i) { Dt(r.$$.fragment, i), o = !1 }, d(i) { rr(r, i) } } } function Bi(n) { let r, o, i, u; const c = [Yi, Fi], l = []; function s(f, p) { return f[5] ? 0 : 1 } return r = s(n), o = l[r] = c[r](n), { c() { o.c(), i = Ve() }, m(f, p) { l[r].m(f, p), pt(f, i, p), u = !0 }, p(f, p) { let y = r; r = s(f), r === y ? l[r].p(f, p) : (Xe(), Dt(l[y], 1, 1, () => { l[y] = null }), to(), o = l[r], o ? o.p(f, p) : (o = l[r] = c[r](f), o.c()), At(o, 1), o.m(i.parentNode, i)) }, i(f) { u || (At(o), u = !0) }, o(f) { Dt(o), u = !1 }, d(f) { l[r].d(f), f && st(i) } } } function qi(n) { let r; return { c() { r = K("div") }, m(o, i) { pt(o, r, i) }, p: nr, i: nr, o: nr, d(o) { o && st(r) } } } function Fi(n) { let r, o, i; function u(l) { n[8](l) } let c = {}; return n[5] !== void 0 && (c.search = n[5]), r = new si({ props: c }), Vr.push(() => ro(r, "search", u)), { c() { ar(r.$$.fragment) }, m(l, s) { tr(r, l, s), i = !0 }, p(l, s) { const f = {}; !o && s & 32 && (o = !0, f.search = l[5], Je(() => o = !1)), r.$set(f) }, i(l) { i || (At(r.$$.fragment, l), i = !0) }, o(l) { Dt(r.$$.fragment, l), i = !1 }, d(l) { rr(r, l) } } } function Yi(n) { let r, o, i; function u(l) { n[7](l) } let c = { prettify: n[6], packages: n[0] }; return n[5] !== void 0 && (c.search = n[5]), r = new $i({ props: c }), Vr.push(() => ro(r, "search", u)), { c() { ar(r.$$.fragment) }, m(l, s) { tr(r, l, s), i = !0 }, p(l, s) { const f = {}; s & 1 && (f.packages = l[0]), !o && s & 32 && (o = !0, f.search = l[5], Je(() => o = !1)), r.$set(f) }, i(l) { i || (At(r.$$.fragment, l), i = !0) }, o(l) { Dt(r.$$.fragment, l), i = !1 }, d(l) { rr(r, l) } } } function Qi(n) { let r, o, i, u; const c = [qi, Bi, Pi, Ui], l = []; function s(f, p) { return f[1] == null ? 0 : f[1] == "main" ? 1 : f[1] == "404" ? 2 : 3 } return o = s(n), i = l[o] = c[o](n), { c() { r = K("main"), i.c() }, m(f, p) { pt(f, r, p), l[o].m(r, null), u = !0 }, p(f, [p]) { let y = o; o = s(f), o === y ? l[o].p(f, p) : (Xe(), Dt(l[y], 1, 1, () => { l[y] = null }), to(), i = l[o], i ? i.p(f, p) : (i = l[o] = c[o](f), i.c()), At(i, 1), i.m(r, null)) }, i(f) { u || (At(i), u = !0) }, o(f) { Dt(i), u = !1 }, d(f) { f && st(r), l[o].d() } } } function Gi(n, r, o) { let i, u = "", c, l, s, f, p = !1, y = k => { let S = "", d = !0; for (const h of k) d ? S += h.toUpperCase() : S += h, d = !1, [" ", "("].includes(h) && (d = !0); return S }; fetch("https://raw.githubusercontent.com/Modern-Modpacks/kjspkg/main/pkgs.json").then(k => { k.json().then(S => { o(0, i = S) }) }), setInterval(() => { if (window.location.hash) { if (i == null || u != null && u == window.location.hash.substring(1)) return; u = window.location.hash.substring(1), Object.keys(i).includes(u) ? (o(4, f = i[u].split("@")[0].split("$")[0]), o(2, l = i[u].includes("@") ? i[u].split("@").at(-1) : "main"), o(3, s = i[u].includes("$") ? i[u].split("@")[0].split("$").at(-1) : null), fetch(`https://raw.githubusercontent.com/${f}/${l}${s != null ? "/" + s : ""}/.kjspkg`).then(k => { k.json().then(S => { o(1, c = S) }) })) : o(1, c = "404") } else o(1, c = "main") }, 1); function _(k) { p = k, o(5, p) } function M(k) { p = k, o(5, p) } return [i, c, l, s, f, p, y, _, M] } class Wi extends Ur { constructor(r) { super(), $r(this, r, Gi, Qi, Or, {}) } } new Wi({ target: document.getElementById("app") }); \ No newline at end of file diff --git a/static/legacy/index.html b/static/legacy/index.html deleted file mode 100644 index b7f649a..0000000 --- a/static/legacy/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - [Legacy] KJSPKG Lookup - - - - - - - - - - - - - Please migrate to the new KJSPKG Lookup. Click me! - -
- - From 81082a14dfacd8a82c28990bb483f15f91adeaed Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Wed, 27 Dec 2023 01:10:26 +0100 Subject: [PATCH 11/25] rebuild From 417cd46eaab1a48233d3c4b6e5400373fc9248d2 Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Wed, 27 Dec 2023 11:36:07 +0100 Subject: [PATCH 12/25] beta v3, I'm gonna go touch grass today tho --- src/app.pcss | 2 +- src/lib/HeaderBar.svelte | 27 ++++++++++++++++++----- src/lib/consts.ts | 2 +- src/lib/overlays/ContextMenu.svelte | 4 ++-- src/lib/project/Dependency.svelte | 2 +- src/lib/project/PackageList.svelte | 4 ++-- src/lib/project/Sidebar.svelte | 2 +- src/routes/+page.svelte | 2 +- src/routes/p/{[package] => }/+page.svelte | 12 +++++----- src/routes/p/[package]/+page.ts | 2 -- src/routes/s/+page.svelte | 6 +---- src/routes/s/+page.ts | 2 -- svelte.config.js | 2 +- 13 files changed, 38 insertions(+), 31 deletions(-) rename src/routes/p/{[package] => }/+page.svelte (91%) delete mode 100644 src/routes/p/[package]/+page.ts delete mode 100644 src/routes/s/+page.ts diff --git a/src/app.pcss b/src/app.pcss index 0e9b073..c664464 100644 --- a/src/app.pcss +++ b/src/app.pcss @@ -103,5 +103,5 @@ body { @apply select-none; } :root.color-animated * { - @apply transition-all duration-[2500ms] ease-in-out; + @apply transition-colors duration-[2500ms] ease-in-out; } diff --git a/src/lib/HeaderBar.svelte b/src/lib/HeaderBar.svelte index 325ca84..7f0df4e 100644 --- a/src/lib/HeaderBar.svelte +++ b/src/lib/HeaderBar.svelte @@ -7,6 +7,7 @@ import { IconArrowLeft, IconCheck, + IconColorSwatch, IconGridDots, IconSearch, IconSettings @@ -23,6 +24,7 @@ let searched = getQuery(); let showOverlay = false; + let allowSettingsClick = true; let inputElement: HTMLInputElement; let overlayTarget: HTMLDivElement; @@ -50,8 +52,16 @@ label, icon: $userPreferencesStore.theme == name ? IconCheck : IconBlank, action: () => { + allowSettingsClick = false; + document.documentElement.classList.add('color-animated'); - setTimeout(() => document.documentElement.classList.remove('color-animated'), 2500); + setTimeout( + () => ( + document.documentElement.classList.remove('color-animated'), + (allowSettingsClick = true) + ), + 2500 + ); $userPreferencesStore.theme = name; document.body.dataset.theme = $userPreferencesStore.theme ?? 'kjspkg'; @@ -134,18 +144,23 @@ bind:value={searched} on:focus={() => (showOverlay = true)} on:blur={() => (showOverlay = false)} - on:change={() => goto(base + `/s?q=${encodeURIComponent(searched || '')}`)} + on:change={() => + goto(base + `/s?q=${encodeURIComponent(searched || '')}`, { keepFocus: true })} />
- -
TODO: top 3 results for quick access? idk, maybe that or something different (or maybe nothing at all) hehe :3 -
+
--> diff --git a/src/lib/consts.ts b/src/lib/consts.ts index 3164f38..06ee0bc 100644 --- a/src/lib/consts.ts +++ b/src/lib/consts.ts @@ -7,7 +7,7 @@ export default { DOCS_URL_REGEX: 'github.com/([^/]+/[^/]+)/blob/(.*)', WHERE_TO: { '/s': '/', - '/p/[package]': '/s' + '/p': '/s' } as { [key: string]: string }, KJSPKG_README: 'https://github.com/Modern-Modpacks/kjspkg#kjspkg' // MR_VALID: 'https://api.modrinth.com/v2/project/', diff --git a/src/lib/overlays/ContextMenu.svelte b/src/lib/overlays/ContextMenu.svelte index c963dac..23e446f 100644 --- a/src/lib/overlays/ContextMenu.svelte +++ b/src/lib/overlays/ContextMenu.svelte @@ -32,7 +32,7 @@ on:click={() => ($contextMenuStore = undefined)} transition:slide={{ axis: 'y', duration: 300 }} > -
+
{#each $contextMenuStore.items as item, i} {#if item.type == 'SEPARATOR'} {#if i > 0} @@ -42,7 +42,7 @@ {:else if item.type == 'ITEM'}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 43e28e9..0c2de3a 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -9,6 +9,10 @@ } + + KJSPKG Lookup + + logo

KJSPKG

diff --git a/src/routes/p/+page.svelte b/src/routes/p/+page.svelte index 4f4fb0e..b962c81 100644 --- a/src/routes/p/+page.svelte +++ b/src/routes/p/+page.svelte @@ -85,6 +85,10 @@ }); + + {packageNameToReadableFormat($page.url.searchParams.get('id') ?? 'no-name')} - KJSPKG Lookup + + {#if state == 'loading'} {:else if state == 'ready'} diff --git a/src/routes/s/+page.svelte b/src/routes/s/+page.svelte index 4cdea9e..8b0c7d3 100644 --- a/src/routes/s/+page.svelte +++ b/src/routes/s/+page.svelte @@ -40,6 +40,10 @@ $: resultedFilter = queryParams.author ? filteredAuthor : $packageStatusStore.search.d; + + {$page.url.searchParams.get('q') || 'Search'} - KJSPKG Lookup + +

{#if !$page.url.searchParams.get('q')} From d3067b125f0c17a5144a0131d8b5b5d2ebd0d6c8 Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Wed, 27 Dec 2023 20:27:54 +0100 Subject: [PATCH 14/25] [TEST] meta, minor --- src/lib/HeaderBar.svelte | 37 +++++++++++++++++++++++++++++++------ src/routes/p/+page.svelte | 11 ++++++++++- src/routes/s/+page.svelte | 6 +++--- 3 files changed, 44 insertions(+), 10 deletions(-) diff --git a/src/lib/HeaderBar.svelte b/src/lib/HeaderBar.svelte index 906e19b..d897c5a 100644 --- a/src/lib/HeaderBar.svelte +++ b/src/lib/HeaderBar.svelte @@ -16,7 +16,7 @@ import { contextMenu, type ContextMenuItem } from './overlays/contextMenu'; import { getPos, triggerOverlay } from './overlays/overlay'; import { userPreferencesStore } from './stores'; - import { goBack } from './utils'; + import { generateInputString, goBack, parseInputString } from './utils'; function getQuery(): string { return $page.route.id == '/s' ? $page.url.searchParams.get('q') ?? '' : ''; @@ -98,6 +98,8 @@ } */ ] as ContextMenuItem[] }; + + $: queryParams = parseInputString(searched); inputElement.focus()} /> @@ -165,12 +167,35 @@ x: getPos(overlayTarget).x, y: getPos(overlayTarget).y + getPos(overlayTarget).h + 8, w: getPos(overlayTarget).w + 'px', - h: '8rem' + h: '' }, - visible: showOverlay + visible: showOverlay && (!!queryParams.author || !!queryParams._details) }} - class="card variant-glass-secondary absolute p-2" + class="card variant-glass-secondary absolute flex gap-1 p-2" > - TODO: top 3 results for quick access? idk, maybe that or something different (or maybe nothing at - all) hehe :3 + {#if queryParams.author} + + {/if} + + {#if queryParams._details} + + {/if}

--> diff --git a/src/routes/p/+page.svelte b/src/routes/p/+page.svelte index b962c81..f508aff 100644 --- a/src/routes/p/+page.svelte +++ b/src/routes/p/+page.svelte @@ -83,10 +83,19 @@ docs = markdown(text); } catch {} }); + + $: title = `${packageNameToReadableFormat($page.url.searchParams.get('id') ?? 'no-name')} - KJSPKG Lookup` - {packageNameToReadableFormat($page.url.searchParams.get('id') ?? 'no-name')} - KJSPKG Lookup + {title} + + + + + + + {#if state == 'loading'} diff --git a/src/routes/s/+page.svelte b/src/routes/s/+page.svelte index 8b0c7d3..f09b9d8 100644 --- a/src/routes/s/+page.svelte +++ b/src/routes/s/+page.svelte @@ -89,15 +89,15 @@ { label: 'Author (a-z)', name: 'author' - }, - { + } + /* { label: 'Download count', name: 'downloads' }, { label: 'Views', name: 'views' - } + } */ ].map(({ label, name }) => ({ type: 'ITEM', label, From 03b943a7909ce113e1c989e5e8d16b30ff51d2cf Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Thu, 28 Dec 2023 00:26:25 +0100 Subject: [PATCH 15/25] ready for prod. maybe. --- package.json | 5 +- pnpm-lock.yaml | 23 +++++++++ src/app.html | 14 +++++- src/app.pcss | 42 +++++++++++++++++ src/lib/HeaderBar.svelte | 1 + src/lib/project/Author.svelte | 2 +- src/lib/project/Dependency.svelte | 2 +- src/lib/project/PackageList.svelte | 24 ++++++---- src/lib/stores.ts | 3 +- src/lib/utils.ts | 5 +- src/routes/+layout.svelte | 16 ++++++- src/routes/+page.svelte | 2 +- src/routes/p/+page.svelte | 17 ++----- src/routes/s/+page.svelte | 75 +++++++++++++++++++++--------- 14 files changed, 178 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index fc85013..1ac0629 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,10 @@ "dependencies": { "@floating-ui/dom": "^1.5.3", "@tabler/icons-svelte": "^2.44.0", + "@types/dom-view-transitions": "^1.0.4", "@types/markdown-it": "^13.0.7", - "markdown-it": "^14.0.0" + "@types/markdown-it-emoji": "^2.0.4", + "markdown-it": "^14.0.0", + "markdown-it-emoji": "^3.0.0" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e7b031..ce9d349 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,12 +11,21 @@ dependencies: '@tabler/icons-svelte': specifier: ^2.44.0 version: 2.44.0(svelte@4.2.8) + '@types/dom-view-transitions': + specifier: ^1.0.4 + version: 1.0.4 '@types/markdown-it': specifier: ^13.0.7 version: 13.0.7 + '@types/markdown-it-emoji': + specifier: ^2.0.4 + version: 2.0.4 markdown-it: specifier: ^14.0.0 version: 14.0.0 + markdown-it-emoji: + specifier: ^3.0.0 + version: 3.0.0 devDependencies: '@skeletonlabs/skeleton': @@ -616,6 +625,10 @@ packages: resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} dev: true + /@types/dom-view-transitions@1.0.4: + resolution: {integrity: sha512-oDuagM6G+xPLrLU4KeCKlr1oalMF5mJqV5pDPMDVIEaa8AkUW00i6u+5P02XCjdEEUQJC9dpnxqSLsZeAciSLQ==} + dev: false + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -623,6 +636,12 @@ packages: resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} dev: false + /@types/markdown-it-emoji@2.0.4: + resolution: {integrity: sha512-H6ulk/ZmbDxOayPwI/leJzrmoW1YKX1Z+MVSCHXuYhvqckV4I/c+hPTf6UiqJyn2avWugfj30XroheEb6/Ekqg==} + dependencies: + '@types/markdown-it': 13.0.7 + dev: false + /@types/markdown-it@13.0.7: resolution: {integrity: sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==} dependencies: @@ -1190,6 +1209,10 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /markdown-it-emoji@3.0.0: + resolution: {integrity: sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==} + dev: false + /markdown-it@14.0.0: resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} hasBin: true diff --git a/src/app.html b/src/app.html index dc43516..cd498de 100644 --- a/src/app.html +++ b/src/app.html @@ -2,9 +2,21 @@ - + %sveltekit.head% + + + + + +
%sveltekit.body%
diff --git a/src/app.pcss b/src/app.pcss index c664464..e381f49 100644 --- a/src/app.pcss +++ b/src/app.pcss @@ -105,3 +105,45 @@ body { :root.color-animated * { @apply transition-colors duration-[2500ms] ease-in-out; } + +/* ------------------------------------------------------------------------------------- */ + +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-from-right { + from { + transform: translateX(30px); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-30px); + } +} + +:root::view-transition-old(root) { + animation: + 90ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 300ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +:root::view-transition-new(root) { + animation: + 210ms cubic-bezier(0, 0, 0.2, 1) 90ms both fade-in, + 300ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +.vt-none { + view-transition-name: _; +} diff --git a/src/lib/HeaderBar.svelte b/src/lib/HeaderBar.svelte index d897c5a..ca15809 100644 --- a/src/lib/HeaderBar.svelte +++ b/src/lib/HeaderBar.svelte @@ -109,6 +109,7 @@ slotDefault="place-self-center" slotTrail="place-self-end" shadow="shadow-lg" + class="vt-none" > diff --git a/src/lib/project/Author.svelte b/src/lib/project/Author.svelte index 9134196..76e285f 100644 --- a/src/lib/project/Author.svelte +++ b/src/lib/project/Author.svelte @@ -20,7 +20,7 @@ /> {/if}
-
{author}
+
{author}
{#if c > 0}
owns {c} diff --git a/src/lib/project/Dependency.svelte b/src/lib/project/Dependency.svelte index f421462..57f86e6 100644 --- a/src/lib/project/Dependency.svelte +++ b/src/lib/project/Dependency.svelte @@ -34,7 +34,7 @@ { type: 'ITEM', label: 'CurseForge', - action: () => window.open('https://www.curseforge.com/minecraft/search?search=' + name) + action: () => window.open('https://www.curseforge.com/minecraft/search?category=mods&class=mc-mods&search=' + name) } ] }} diff --git a/src/lib/project/PackageList.svelte b/src/lib/project/PackageList.svelte index 72da00e..7121f6d 100644 --- a/src/lib/project/PackageList.svelte +++ b/src/lib/project/PackageList.svelte @@ -5,7 +5,7 @@ import { packageNameToReadableFormat } from '$lib/utils'; import { createEventDispatcher } from 'svelte'; import { flip } from 'svelte/animate'; - import { fade } from 'svelte/transition'; + import { fade, slide } from 'svelte/transition'; const dispatch = createEventDispatcher(); @@ -15,20 +15,22 @@ export let showAvatar = true; export let showDetails = true; export let showName = true; + export let compact = false; $: sortedP = (() => { + const alphabetic = [...p].sort((_a, _b) => { + const a = _a[0]; + const b = _b[0]; + + return a == b ? 0 : a < b ? -1 : 1; + }); switch (sortBy) { case '': return p; case 'name': - return [...p].sort((_a, _b) => { - const a = _a[0]; - const b = _b[0]; - - return a == b ? 0 : a < b ? -1 : 1; - }); + return alphabetic; case 'author': - return [...p].sort((_a, _b) => { + return [...alphabetic].sort((_a, _b) => { const a = (_a[1].match(consts.LOCATOR_REGEX)!)[1]; const b = (_b[1].match(consts.LOCATOR_REGEX)!)[1]; @@ -50,16 +52,18 @@ dispatch('select', name)} class:!variant-filled-primary={$page.url.searchParams.get('id') == name} animate:flip={{ delay: i * 25, duration: 1000 }} transition:fade={{ delay: i * 25, duration: 300 }} > - {#if showAvatar} + {#if showAvatar && !compact} author's profile avatar {/if}
diff --git a/src/lib/stores.ts b/src/lib/stores.ts index 848137e..ba066fb 100644 --- a/src/lib/stores.ts +++ b/src/lib/stores.ts @@ -14,4 +14,5 @@ export const userPreferencesStore = localStorageStore<{ sortBy: '' | 'name' | 'author' | 'downloads' | 'views'; theme: string; lightMode: boolean; -}>('preferences', { sortBy: 'name', theme: 'kjspkg', lightMode: false }); + compact: boolean; +}>('preferences', { sortBy: 'name', theme: 'kjspkg', lightMode: false, compact: false }); diff --git a/src/lib/utils.ts b/src/lib/utils.ts index fe604de..56a4820 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -6,6 +6,9 @@ import { get } from 'svelte/store'; import consts from './consts'; import { packageListStore } from './stores'; +// @ts-expect-error full exists, thanks crappy types +import { full as emoji } from 'markdown-it-emoji'; + const md = markdownit({ html: false, xhtmlOut: false, @@ -17,7 +20,7 @@ const md = markdownit({ highlight: function (/*str, lang*/) { return ''; } -}); +}).use(emoji); export function filterObjectByKey( obj: { [key: string]: string }, diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index bd9c644..19783ab 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,5 +1,5 @@ @@ -49,7 +61,7 @@ -
+
{#key $page.url.pathname} {/key} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 0c2de3a..83a819a 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -14,7 +14,7 @@ logo -

KJSPKG

+

KJSPKG Lookup


diff --git a/src/routes/p/+page.svelte b/src/routes/p/+page.svelte index f508aff..3f5eac4 100644 --- a/src/routes/p/+page.svelte +++ b/src/routes/p/+page.svelte @@ -83,19 +83,10 @@ docs = markdown(text); } catch {} }); - - $: title = `${packageNameToReadableFormat($page.url.searchParams.get('id') ?? 'no-name')} - KJSPKG Lookup` - {title} - - - - - - - + {packageNameToReadableFormat($page.url.searchParams.get('id') ?? 'no-name')} - KJSPKG Lookup {#if state == 'loading'} @@ -125,8 +116,8 @@
Created by
- {locatorInfo[1]} - {locatorInfo[1] != thisPackage.author ? `(${thisPackage.author})` : ''} + {locatorInfo[1] != thisPackage.author ? `${thisPackage.author}` : ''} + ({locatorInfo[1]})
@@ -186,7 +177,7 @@ {#if docs != ''}
- README file + README file
{@html docs} diff --git a/src/routes/s/+page.svelte b/src/routes/s/+page.svelte index f09b9d8..85caa46 100644 --- a/src/routes/s/+page.svelte +++ b/src/routes/s/+page.svelte @@ -44,41 +44,60 @@ {$page.url.searchParams.get('q') || 'Search'} - KJSPKG Lookup -
+

{#if !$page.url.searchParams.get('q')} - {$packageStatusStore.search.d.length} packages available + Found {$packageStatusStore.search.d.length} packages {:else} Found - {resultedFilter.length} - {resultedFilter.length == 1 ? 'package' : 'packages'} + {resultedFilter.length} + + {resultedFilter.length == 1 ? 'package' : 'packages'} + {#if queryParams.author && filteredAuthor.length > 0} - - made by - - {queryParams.author} - - + {/if} {#if queryParams.ROOT != ''} - matching {`"${queryParams.ROOT}"`} + matching + {/if} {#if queryParams._details == 'i'} - (detailed) + {/if} {/if}

-
+
+ {#if queryParams._details != 'i'} + + {#if o.t} +
+ {@html markdownInline(o.t)} +
+ {/if} {:else}
{/if} {/each} - -
-

- In case you aren't aware, you need the - KJSPKG - tool to install this package! -

-
-
-

- Got an issue? Need help? Use this packages - issue tracker - to let us know! -

-
- -
-
From d87f8878d59cf0f199d070c26f62de837802ad83 Mon Sep 17 00:00:00 2001 From: tizu69 <60812901+tizu69@users.noreply.github.com> Date: Tue, 2 Jan 2024 22:09:30 +0100 Subject: [PATCH 21/25] it's been a while... are we prod ready yet? added some QOL things and backend (thanks automatin'!) --- package.json | 1 + pnpm-lock.yaml | 28 ++++++ src/app.pcss | 3 +- src/lib/HeaderBar.svelte | 98 +++++--------------- src/lib/consts.ts | 7 +- src/lib/project/Dependency.svelte | 2 +- src/lib/project/ManagePackage.svelte | 2 +- src/lib/project/PackageList.svelte | 26 ++++-- src/lib/project/PackagePreview.svelte | 21 +++-- src/lib/stores.ts | 20 ++++- src/lib/utils.ts | 33 +++---- src/routes/+layout.svelte | 9 +- src/routes/+layout.ts | 6 ++ src/routes/+page.svelte | 61 +++++++++---- src/routes/home/+page.svelte | 33 +++++++ src/routes/p/+page.svelte | 94 ++++++++++++------- src/routes/s/+page.svelte | 124 ++++++++++++++++++-------- svelte.config.js | 2 +- 18 files changed, 372 insertions(+), 198 deletions(-) create mode 100644 src/routes/home/+page.svelte diff --git a/package.json b/package.json index 1ac0629..3b840a2 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@types/dom-view-transitions": "^1.0.4", "@types/markdown-it": "^13.0.7", "@types/markdown-it-emoji": "^2.0.4", + "fuzzball": "^2.1.2", "markdown-it": "^14.0.0", "markdown-it-emoji": "^3.0.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ce9d349..9933492 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ dependencies: '@types/markdown-it-emoji': specifier: ^2.0.4 version: 2.0.4 + fuzzball: + specifier: ^2.1.2 + version: 2.1.2 markdown-it: specifier: ^14.0.0 version: 14.0.0 @@ -1025,6 +1028,15 @@ packages: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true + /fuzzball@2.1.2: + resolution: {integrity: sha512-wVBw/a73M3luaX6ZHt9vIoEKT/rLqBkzdBRhQzWw/IQyIt0qnqc0IAJDCkX3CLgj2tRIUAfgDUT8G6YuMpmNXg==} + dependencies: + heap: 0.2.7 + setimmediate: 1.0.5 + string.fromcodepoint: 0.2.1 + string.prototype.codepointat: 0.2.1 + dev: false + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1081,6 +1093,10 @@ packages: function-bind: 1.1.2 dev: true + /heap@0.2.7: + resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} + dev: false + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -1656,6 +1672,10 @@ packages: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: false + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -1714,6 +1734,14 @@ packages: strip-ansi: 7.1.0 dev: true + /string.fromcodepoint@0.2.1: + resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} + dev: false + + /string.prototype.codepointat@0.2.1: + resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} diff --git a/src/app.pcss b/src/app.pcss index 01979d1..4102e8f 100644 --- a/src/app.pcss +++ b/src/app.pcss @@ -40,7 +40,7 @@ body { } .style-markdown pre { - @apply bg-surface-backdrop-token pre w-full overflow-scroll; + @apply bg-surface-backdrop-token pre w-full overflow-auto text-nowrap; } .style-markdown pre > code { @apply select-text; @@ -65,6 +65,7 @@ body { .style-markdown a > img[alt='kjspkg-available'] { animation: kjspkgBadge 2s infinite ease-out; + animation-delay: 1s; animation-iteration-count: 1; } } diff --git a/src/lib/HeaderBar.svelte b/src/lib/HeaderBar.svelte index ca15809..f5d1d5f 100644 --- a/src/lib/HeaderBar.svelte +++ b/src/lib/HeaderBar.svelte @@ -4,30 +4,20 @@ import { page } from '$app/stores'; import { IconBlank } from '$lib'; import { AppBar } from '@skeletonlabs/skeleton'; - import { - IconArrowLeft, - IconCheck, - IconColorSwatch, - IconGridDots, - IconSearch, - IconSettings - } from '@tabler/icons-svelte'; + import { IconCheck, IconColorSwatch, IconSearch } from '@tabler/icons-svelte'; import consts from './consts'; import { contextMenu, type ContextMenuItem } from './overlays/contextMenu'; - import { getPos, triggerOverlay } from './overlays/overlay'; - import { userPreferencesStore } from './stores'; - import { generateInputString, goBack, parseInputString } from './utils'; + import { currentSearchStore, userPreferencesStore } from './stores'; + import { parseInputString } from './utils'; function getQuery(): string { return $page.route.id == '/s' ? $page.url.searchParams.get('q') ?? '' : ''; } let searched = getQuery(); - let showOverlay = false; let allowSettingsClick = true; let inputElement: HTMLInputElement; - let overlayTarget: HTMLDivElement; afterNavigate(() => (searched = getQuery())); @@ -102,7 +92,16 @@ $: queryParams = parseInputString(searched); - inputElement.focus()} /> + { + if ( + (event.keyCode >= 48 && event.keyCode <= 57) || + (event.keyCode >= 65 && event.keyCode <= 90) || + (event.keyCode >= 97 && event.keyCode <= 122) + ) + inputElement.focus(); + }} +/> - - {#if consts.WHERE_TO[$page.route.id ?? ''] != undefined} - - {:else} - - {/if} - - + + logo + +
@@ -161,42 +148,3 @@ - - diff --git a/src/lib/consts.ts b/src/lib/consts.ts index 06ee0bc..82a7430 100644 --- a/src/lib/consts.ts +++ b/src/lib/consts.ts @@ -5,11 +5,8 @@ export default { NO_SIDEBAR: ['/'], LOCATOR_REGEX: '([^/@$]*)/([^/@$]*)(@[^/@$]*)?(\\$[^@$]*)?', DOCS_URL_REGEX: 'github.com/([^/]+/[^/]+)/blob/(.*)', - WHERE_TO: { - '/s': '/', - '/p': '/s' - } as { [key: string]: string }, - KJSPKG_README: 'https://github.com/Modern-Modpacks/kjspkg#kjspkg' + KJSPKG_README: 'https://github.com/Modern-Modpacks/kjspkg#kjspkg', // MR_VALID: 'https://api.modrinth.com/v2/project/', // MR_TARGET: 'https://modrinth.com/mod/' + AUTOMATIN_URL: 'https://tizudev.vercel.app/automatin/api/1058430315263180890/kjspkg' }; diff --git a/src/lib/project/Dependency.svelte b/src/lib/project/Dependency.svelte index 57f86e6..7cb0920 100644 --- a/src/lib/project/Dependency.svelte +++ b/src/lib/project/Dependency.svelte @@ -59,5 +59,5 @@ - + {/if} diff --git a/src/lib/project/ManagePackage.svelte b/src/lib/project/ManagePackage.svelte index 1dd407b..58606ad 100644 --- a/src/lib/project/ManagePackage.svelte +++ b/src/lib/project/ManagePackage.svelte @@ -28,7 +28,7 @@ {#if o} +{/if} diff --git a/src/routes/p/+page.svelte b/src/routes/p/+page.svelte index 3f5eac4..dabcf03 100644 --- a/src/routes/p/+page.svelte +++ b/src/routes/p/+page.svelte @@ -4,10 +4,9 @@ import { page } from '$app/stores'; import { CenterLoader, Dependency, ManagePackage } from '$lib'; import consts from '$lib/consts'; - import { currentAuthorStore, packageListStore } from '$lib/stores'; + import { currentAuthorStore, packageListStore, packageStatStore } from '$lib/stores'; import { capitalizeFirstLetter, - goBack, initPackageList, markdown, markdownInline, @@ -18,6 +17,8 @@ const toastStore = getToastStore(); + $: id = $page.url.searchParams.get('id'); + let thisPackage: { [k: string]: any } = {}; let state: 'loading' | 'ready' | 'fail' = 'loading'; @@ -34,11 +35,17 @@ issueLink = ''; onMount(async () => { - if (!(await initPackageList())) goto(base + '/s'); + if (!(await initPackageList())) return goto(base + '/s'); + + if (!id) { + state = 'fail'; + return goto(base + '/s'); + } - locator = ($packageListStore ?? {})[$page.url.searchParams.get('id') ?? '']; + locator = ($packageListStore ?? {})[id ?? '']; if (!locator) { state = 'fail'; + return goto(base + '/s'); } locatorInfo = locator.match(consts.LOCATOR_REGEX)!; @@ -57,14 +64,15 @@ state = 'ready'; } catch { state = 'fail'; + return goto(base + '/s'); } $currentAuthorStore = author ?? ''; - /* if (!$packageStatusStore.back.d.some((p) => p[0] == $page.url.searchParams.get('id'))) + /* if (!$packageStatusStore.back.d.some((p) => p[0] == id)) $packageStatusStore.back.d = [ ...$packageStatusStore.back.d, - ...$packageStatusStore.search.d.filter((p) => p[0] == $page.url.searchParams.get('id')) + ...$packageStatusStore.search.d.filter((p) => p[0] == id) ]; */ issueLink = `https://github.com/${author}/${repo}/issues`; @@ -82,79 +90,101 @@ const text = await res.text(); docs = markdown(text); } catch {} + + try { + const res = await fetch(consts.AUTOMATIN_URL + `?stat=views&id=${id}`, { method: 'PUT' }); + const text = await res.text(); + + if (!$packageStatStore.views[id]) $packageStatStore.views[id] = 0; + if (text == '0') $packageStatStore.views[id]++; + } catch (err) { + console.error(err); + } }); - {packageNameToReadableFormat($page.url.searchParams.get('id') ?? 'no-name')} - KJSPKG Lookup + {packageNameToReadableFormat(id ?? 'no-name')} - KJSPKG Lookup {#if state == 'loading'} -{:else if state == 'ready'} -

+{:else if state == 'ready' && id} + {@const statDownloads = $packageStatStore.downloads[id] ?? 0} + {@const statViews = $packageStatStore.views[id] ?? 0} + +

- {packageNameToReadableFormat($page.url.searchParams.get('id') ?? 'no-name') ?? 'This package'} + {packageNameToReadableFormat(id ?? 'no-name') ?? 'This package'}

-
- {@html markdownInline(thisPackage.description)} +
+ + {@html markdownInline(thisPackage.description)} + + + {statDownloads} download{statDownloads == 1 ? '' : 's'} • + {statViews} view{statViews == 1 ? '' : 's'} +
Available for
-
+
{#each thisPackage.modloaders as t} - {capitalizeFirstLetter(t)} + {capitalizeFirstLetter(t)} {/each} • {#each thisPackage.versions as t} - {`1.${+t + 10}`} + {`1.${+t + 10}`} {/each}
-