commit 81c79275aabb08cf27f61efbed45ebe864e5feb4 Author: abearxiong Date: Mon Mar 10 10:50:06 2025 +0800 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..67517ff --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules +dist +app-dist \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..3d40c71 --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + Package Manager + + +
+

Package Manager

+
+
+ + \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..c50cdb1 --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "silky-assistant", + "version": "0.0.1", + "description": "", + "main": "dist/main/main.js", + "scripts": { + "dev": "vite --config vite.config.ts", + "build": "vite build --config vite.config.ts", + "build:watch": "vite build --config vite.config.ts -w", + "build:electron": "vite build --config vite.config.ts", + "start": "electron ." + }, + "keywords": [], + "author": "abearxiong ", + "license": "MIT", + "type": "module", + "devDependencies": { + "@types/electron": "^1.6.12", + "@types/node": "^22.13.9", + "electron-log": "^5.3.2", + "electron-updater": "^6.3.9", + "typescript": "^5.8.2", + "vite": "^6.2.1", + "vite-plugin-electron": "^0.29.0", + "vite-plugin-static-copy": "^2.3.0" + }, + "dependencies": { + "@kevisual/assistant-module": "^0.0.3", + "@kevisual/router": "^0.0.9", + "electron": "^35.0.0" + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..891d95c --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1657 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@kevisual/assistant-module': + specifier: ^0.0.3 + version: 0.0.3 + '@kevisual/router': + specifier: ^0.0.9 + version: 0.0.9 + electron: + specifier: ^35.0.0 + version: 35.0.0 + devDependencies: + '@types/electron': + specifier: ^1.6.12 + version: 1.6.12 + '@types/node': + specifier: ^22.13.9 + version: 22.13.9 + electron-log: + specifier: ^5.3.2 + version: 5.3.2 + electron-updater: + specifier: ^6.3.9 + version: 6.3.9 + typescript: + specifier: ^5.8.2 + version: 5.8.2 + vite: + specifier: ^6.2.1 + version: 6.2.1(@types/node@22.13.9) + vite-plugin-electron: + specifier: ^0.29.0 + version: 0.29.0 + vite-plugin-static-copy: + specifier: ^2.3.0 + version: 2.3.0(vite@6.2.1(@types/node@22.13.9)) + +packages: + + '@electron/get@2.0.3': + resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} + engines: {node: '>=12'} + + '@esbuild/aix-ppc64@0.25.0': + resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.0': + resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.0': + resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.0': + resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.0': + resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.0': + resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.0': + resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.0': + resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.0': + resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.0': + resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.0': + resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.0': + resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.0': + resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.0': + resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.0': + resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.0': + resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.0': + resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.0': + resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.0': + resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.0': + resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.0': + resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.0': + resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.0': + resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.0': + resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.0': + resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@kevisual/assistant-module@0.0.3': + resolution: {integrity: sha512-XC9tZJk+GclDV7fVXqmghbMRfhD4dqFh/X085LttDw3iBDkRO78H8+zCrHwx+poSh4JQDYite/FJdpQOs+cHoA==} + + '@kevisual/router@0.0.9': + resolution: {integrity: sha512-qPyC2GVJ7iOIdJCCKNDsWMAKOQeSJW9HBpL5ZWKHTbi+t4jJBGTzIlXmjKeMHRd0lr/Qq1imQvlkSh4hlrbodA==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@rollup/rollup-android-arm-eabi@4.34.9': + resolution: {integrity: sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.34.9': + resolution: {integrity: sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.34.9': + resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.34.9': + resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.34.9': + resolution: {integrity: sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.34.9': + resolution: {integrity: sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.34.9': + resolution: {integrity: sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.34.9': + resolution: {integrity: sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.34.9': + resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.34.9': + resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.34.9': + resolution: {integrity: sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.9': + resolution: {integrity: sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.34.9': + resolution: {integrity: sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.34.9': + resolution: {integrity: sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.34.9': + resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.34.9': + resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.34.9': + resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.34.9': + resolution: {integrity: sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.34.9': + resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==} + cpu: [x64] + os: [win32] + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + + '@types/electron@1.6.12': + resolution: {integrity: sha512-NIJokDkGv9h+MStCL1IuiL1FOHYVkszoWeNxJtSI5dcEKRGbX83JcVYNAgk019qOQgJkHtz9WdP0CDXvrArrGg==} + deprecated: This is a stub types definition. electron provides its own type definitions, so you do not need this installed. + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@22.13.9': + resolution: {integrity: sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + boolean@3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + builder-util-runtime@9.2.10: + resolution: {integrity: sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw==} + engines: {node: '>=12.0.0'} + + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-log@5.3.2: + resolution: {integrity: sha512-EFI5MFFEzFJU5gyhJNpKQhfGfrRP9IWzSu0sSxrWXasWKvVAOFgBySafX8W1pbPKa/w8/DDPu2bBBtVZJdDsnw==} + engines: {node: '>= 14'} + + electron-updater@6.3.9: + resolution: {integrity: sha512-2PJNONi+iBidkoC5D1nzT9XqsE8Q1X28Fn6xRQhO3YX8qRRyJ3mkV4F1aQsuRnYPqq6Hw+E51y27W75WgDoofw==} + + electron@35.0.0: + resolution: {integrity: sha512-mwNQNktYLPnUWZVR8iNkfWCBjmM5e2/CmB1rhACwE9ASDbVU7CYPgp/jLUB3bj/LyQsfSuubD82OUite6SN8Uw==} + engines: {node: '>= 12.20.55'} + hasBin: true + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + + esbuild@0.25.0: + resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==} + engines: {node: '>=18'} + hasBin: true + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + global-agent@3.0.0: + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + engines: {node: '>=10.0'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + lazy-val@1.0.5: + resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} + + lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + matcher@3.0.0: + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + engines: {node: '>=10'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + + p-map@7.0.3: + resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + engines: {node: '>=18'} + + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + roarr@2.15.4: + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + engines: {node: '>=8.0'} + + rollup@4.34.9: + resolution: {integrity: sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + send@1.1.0: + resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==} + engines: {node: '>= 18'} + + serialize-error@7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + sumchecker@3.0.1: + resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} + engines: {node: '>= 8.0'} + + tiny-typed-emitter@2.1.0: + resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + + typescript@5.8.2: + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + vite-plugin-electron@0.29.0: + resolution: {integrity: sha512-HP0DI9Shg41hzt55IKYVnbrChWXHX95QtsEQfM+szQBpWjVhVGMlqRjVco6ebfQjWNr+Ga+PeoBjMIl8zMaufw==} + peerDependencies: + vite-plugin-electron-renderer: '*' + peerDependenciesMeta: + vite-plugin-electron-renderer: + optional: true + + vite-plugin-static-copy@2.3.0: + resolution: {integrity: sha512-LLKwhhHetGaCnWz4mas4qqjjguDka6/6b4+SeIohRroj8aCE7QTfiZECfPecslFQkWZ3HdQuq5kOPmWZjNYlKA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + + vite@6.2.1: + resolution: {integrity: sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + +snapshots: + + '@electron/get@2.0.3': + dependencies: + debug: 4.4.0 + env-paths: 2.2.1 + fs-extra: 8.1.0 + got: 11.8.6 + progress: 2.0.3 + semver: 6.3.1 + sumchecker: 3.0.1 + optionalDependencies: + global-agent: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@esbuild/aix-ppc64@0.25.0': + optional: true + + '@esbuild/android-arm64@0.25.0': + optional: true + + '@esbuild/android-arm@0.25.0': + optional: true + + '@esbuild/android-x64@0.25.0': + optional: true + + '@esbuild/darwin-arm64@0.25.0': + optional: true + + '@esbuild/darwin-x64@0.25.0': + optional: true + + '@esbuild/freebsd-arm64@0.25.0': + optional: true + + '@esbuild/freebsd-x64@0.25.0': + optional: true + + '@esbuild/linux-arm64@0.25.0': + optional: true + + '@esbuild/linux-arm@0.25.0': + optional: true + + '@esbuild/linux-ia32@0.25.0': + optional: true + + '@esbuild/linux-loong64@0.25.0': + optional: true + + '@esbuild/linux-mips64el@0.25.0': + optional: true + + '@esbuild/linux-ppc64@0.25.0': + optional: true + + '@esbuild/linux-riscv64@0.25.0': + optional: true + + '@esbuild/linux-s390x@0.25.0': + optional: true + + '@esbuild/linux-x64@0.25.0': + optional: true + + '@esbuild/netbsd-arm64@0.25.0': + optional: true + + '@esbuild/netbsd-x64@0.25.0': + optional: true + + '@esbuild/openbsd-arm64@0.25.0': + optional: true + + '@esbuild/openbsd-x64@0.25.0': + optional: true + + '@esbuild/sunos-x64@0.25.0': + optional: true + + '@esbuild/win32-arm64@0.25.0': + optional: true + + '@esbuild/win32-ia32@0.25.0': + optional: true + + '@esbuild/win32-x64@0.25.0': + optional: true + + '@kevisual/assistant-module@0.0.3': + dependencies: + send: 1.1.0 + ws: 8.18.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@kevisual/router@0.0.9': + dependencies: + path-to-regexp: 8.2.0 + selfsigned: 2.4.1 + ws: 8.18.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@rollup/rollup-android-arm-eabi@4.34.9': + optional: true + + '@rollup/rollup-android-arm64@4.34.9': + optional: true + + '@rollup/rollup-darwin-arm64@4.34.9': + optional: true + + '@rollup/rollup-darwin-x64@4.34.9': + optional: true + + '@rollup/rollup-freebsd-arm64@4.34.9': + optional: true + + '@rollup/rollup-freebsd-x64@4.34.9': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.34.9': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.34.9': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.34.9': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-x64-musl@4.34.9': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.34.9': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.34.9': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.34.9': + optional: true + + '@sindresorhus/is@4.6.0': {} + + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 22.13.9 + '@types/responselike': 1.0.3 + + '@types/electron@1.6.12': + dependencies: + electron: 35.0.0 + transitivePeerDependencies: + - supports-color + + '@types/estree@1.0.6': {} + + '@types/http-cache-semantics@4.0.4': {} + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 22.13.9 + + '@types/node-forge@1.3.11': + dependencies: + '@types/node': 22.13.9 + + '@types/node@22.13.9': + dependencies: + undici-types: 6.20.0 + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 22.13.9 + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 22.13.9 + optional: true + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@2.0.1: {} + + binary-extensions@2.3.0: {} + + boolean@3.2.0: + optional: true + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + buffer-crc32@0.2.13: {} + + builder-util-runtime@9.2.10: + dependencies: + debug: 4.4.0 + sax: 1.4.1 + transitivePeerDependencies: + - supports-color + + cacheable-lookup@5.0.4: {} + + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + 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 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + defer-to-connect@2.0.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + optional: true + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + optional: true + + depd@2.0.0: {} + + destroy@1.2.0: {} + + detect-node@2.1.0: + optional: true + + ee-first@1.1.1: {} + + electron-log@5.3.2: {} + + electron-updater@6.3.9: + dependencies: + builder-util-runtime: 9.2.10 + fs-extra: 10.1.0 + js-yaml: 4.1.0 + lazy-val: 1.0.5 + lodash.escaperegexp: 4.1.2 + lodash.isequal: 4.5.0 + semver: 7.7.1 + tiny-typed-emitter: 2.1.0 + transitivePeerDependencies: + - supports-color + + electron@35.0.0: + dependencies: + '@electron/get': 2.0.3 + '@types/node': 22.13.9 + extract-zip: 2.0.1 + transitivePeerDependencies: + - supports-color + + encodeurl@2.0.0: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + env-paths@2.2.1: {} + + es-define-property@1.0.1: + optional: true + + es-errors@1.3.0: + optional: true + + es6-error@4.1.1: + optional: true + + esbuild@0.25.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.0 + '@esbuild/android-arm': 0.25.0 + '@esbuild/android-arm64': 0.25.0 + '@esbuild/android-x64': 0.25.0 + '@esbuild/darwin-arm64': 0.25.0 + '@esbuild/darwin-x64': 0.25.0 + '@esbuild/freebsd-arm64': 0.25.0 + '@esbuild/freebsd-x64': 0.25.0 + '@esbuild/linux-arm': 0.25.0 + '@esbuild/linux-arm64': 0.25.0 + '@esbuild/linux-ia32': 0.25.0 + '@esbuild/linux-loong64': 0.25.0 + '@esbuild/linux-mips64el': 0.25.0 + '@esbuild/linux-ppc64': 0.25.0 + '@esbuild/linux-riscv64': 0.25.0 + '@esbuild/linux-s390x': 0.25.0 + '@esbuild/linux-x64': 0.25.0 + '@esbuild/netbsd-arm64': 0.25.0 + '@esbuild/netbsd-x64': 0.25.0 + '@esbuild/openbsd-arm64': 0.25.0 + '@esbuild/openbsd-x64': 0.25.0 + '@esbuild/sunos-x64': 0.25.0 + '@esbuild/win32-arm64': 0.25.0 + '@esbuild/win32-ia32': 0.25.0 + '@esbuild/win32-x64': 0.25.0 + + escape-html@1.0.3: {} + + escape-string-regexp@4.0.0: + optional: true + + etag@1.8.1: {} + + extract-zip@2.0.1: + dependencies: + debug: 4.4.0 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + fast-glob@3.3.3: + 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.8 + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + fresh@0.5.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fsevents@2.3.3: + optional: true + + get-stream@5.2.0: + dependencies: + pump: 3.0.2 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + global-agent@3.0.0: + dependencies: + boolean: 3.2.0 + es6-error: 4.1.1 + matcher: 3.0.0 + roarr: 2.15.4 + semver: 7.7.1 + serialize-error: 7.0.1 + optional: true + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + optional: true + + gopd@1.2.0: + optional: true + + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + + graceful-fs@4.2.11: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + optional: true + + http-cache-semantics@4.1.1: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + inherits@2.0.4: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-stringify-safe@5.0.1: + optional: true + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + lazy-val@1.0.5: {} + + lodash.escaperegexp@4.1.2: {} + + lodash.isequal@4.5.0: {} + + lowercase-keys@2.0.0: {} + + matcher@3.0.0: + dependencies: + escape-string-regexp: 4.0.0 + optional: true + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + + ms@2.1.3: {} + + nanoid@3.3.8: {} + + node-forge@1.3.1: {} + + normalize-path@3.0.0: {} + + normalize-url@6.1.0: {} + + object-keys@1.1.1: + optional: true + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + p-cancelable@2.1.1: {} + + p-map@7.0.3: {} + + path-to-regexp@8.2.0: {} + + pend@1.2.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + postcss@8.5.3: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + progress@2.0.3: {} + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + queue-microtask@1.2.3: {} + + quick-lru@5.1.1: {} + + range-parser@1.2.1: {} + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + resolve-alpn@1.2.1: {} + + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + reusify@1.1.0: {} + + roarr@2.15.4: + dependencies: + boolean: 3.2.0 + detect-node: 2.1.0 + globalthis: 1.0.4 + json-stringify-safe: 5.0.1 + semver-compare: 1.0.0 + sprintf-js: 1.1.3 + optional: true + + rollup@4.34.9: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.34.9 + '@rollup/rollup-android-arm64': 4.34.9 + '@rollup/rollup-darwin-arm64': 4.34.9 + '@rollup/rollup-darwin-x64': 4.34.9 + '@rollup/rollup-freebsd-arm64': 4.34.9 + '@rollup/rollup-freebsd-x64': 4.34.9 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.9 + '@rollup/rollup-linux-arm-musleabihf': 4.34.9 + '@rollup/rollup-linux-arm64-gnu': 4.34.9 + '@rollup/rollup-linux-arm64-musl': 4.34.9 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.9 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.9 + '@rollup/rollup-linux-riscv64-gnu': 4.34.9 + '@rollup/rollup-linux-s390x-gnu': 4.34.9 + '@rollup/rollup-linux-x64-gnu': 4.34.9 + '@rollup/rollup-linux-x64-musl': 4.34.9 + '@rollup/rollup-win32-arm64-msvc': 4.34.9 + '@rollup/rollup-win32-ia32-msvc': 4.34.9 + '@rollup/rollup-win32-x64-msvc': 4.34.9 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + sax@1.4.1: {} + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + + semver-compare@1.0.0: + optional: true + + semver@6.3.1: {} + + semver@7.7.1: {} + + send@1.1.0: + dependencies: + debug: 4.4.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime-types: 2.1.35 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-error@7.0.1: + dependencies: + type-fest: 0.13.1 + optional: true + + setprototypeof@1.2.0: {} + + source-map-js@1.2.1: {} + + sprintf-js@1.1.3: + optional: true + + statuses@2.0.1: {} + + sumchecker@3.0.1: + dependencies: + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + tiny-typed-emitter@2.1.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + type-fest@0.13.1: + optional: true + + typescript@5.8.2: {} + + undici-types@6.20.0: {} + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + vite-plugin-electron@0.29.0: {} + + vite-plugin-static-copy@2.3.0(vite@6.2.1(@types/node@22.13.9)): + dependencies: + chokidar: 3.6.0 + fast-glob: 3.3.3 + fs-extra: 11.3.0 + p-map: 7.0.3 + picocolors: 1.1.1 + vite: 6.2.1(@types/node@22.13.9) + + vite@6.2.1(@types/node@22.13.9): + dependencies: + esbuild: 0.25.0 + postcss: 8.5.3 + rollup: 4.34.9 + optionalDependencies: + '@types/node': 22.13.9 + fsevents: 2.3.3 + + wrappy@1.0.2: {} + + ws@8.18.1: {} + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 diff --git a/router-app/.gitignore b/router-app/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/router-app/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/router-app/pem/https-cert.pem b/router-app/pem/https-cert.pem new file mode 100644 index 0000000..68f4fce --- /dev/null +++ b/router-app/pem/https-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICXTCCAcagAwIBAgIJHsP036vqWER/MA0GCSqGSIb3DQEBBQUAMF8xCjAIBgNV +BAMTASoxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhaaGVKaWFuZzERMA8GA1UEBxMI +SGFuZ3pob3UxETAPBgNVBAoTCEVudmlzaW9uMQswCQYDVQQLEwJJVDAeFw0yNTAz +MDcxNDIwMTJaFw0yNjAzMDcxNDIwMTJaMF8xCjAIBgNVBAMTASoxCzAJBgNVBAYT +AkNOMREwDwYDVQQIEwhaaGVKaWFuZzERMA8GA1UEBxMISGFuZ3pob3UxETAPBgNV +BAoTCEVudmlzaW9uMQswCQYDVQQLEwJJVDCBnzANBgkqhkiG9w0BAQEFAAOBjQAw +gYkCgYEAquA2XnwduVSJHvnTW4r5yodz/joTPUi+r8kS/KJyR/NQ5xovtDY2gJoO +nJk8qekcLKuofskIIu4HFsCE7AYBkQGaYmc+0cCQCmEpwivesbeMB0ydz+6NwLQn +32HVjtMtx3gUcywGdMntiQb/P9FIhtE132wOmW9PeSl0dx/nyrUCAwEAAaMhMB8w +HQYDVR0RBBYwFIIBKoIJbG9jYWxob3N0hwR/AAABMA0GCSqGSIb3DQEBBQUAA4GB +AJsjIZgb6iE4OTXoEDiBPmHM+byWs20K2eCvi79V9/vns90IroBQfGirIsovv923 +SqjmdAFsZkRUbZvX99lBX0mmZK9KTE4K9YUm7bv+d8+fBPxAgNFSTRiSNBeNh0Lh +HdJUiI/tzIfI6RRg1pFDC1tOG083Cl/YElN879w3Iipi +-----END CERTIFICATE----- diff --git a/router-app/pem/https-key.pem b/router-app/pem/https-key.pem new file mode 100644 index 0000000..7263037 --- /dev/null +++ b/router-app/pem/https-key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQCq4DZefB25VIke+dNbivnKh3P+OhM9SL6vyRL8onJH81DnGi+0 +NjaAmg6cmTyp6Rwsq6h+yQgi7gcWwITsBgGRAZpiZz7RwJAKYSnCK96xt4wHTJ3P +7o3AtCffYdWO0y3HeBRzLAZ0ye2JBv8/0UiG0TXfbA6Zb095KXR3H+fKtQIDAQAB +AoGADDEbL/qjFEoXzoH8tpdf4zdu60CxhrneASTTmfrtNH0D1LlllfIYSWy0hi/Y +yDa9r+I/j2xAjF13XAQ4d66mBdjCRATLx/aL495o+e6NkIBEAgdP88hHm13F6gg+ +h8iMixs5mkwU41sghnCYeBqlziKPi8fsoTmhK0VETFUtDQECQQDT0kZ7OCEVNcz0 +LAUPO7ukeHAYnGYns+Q3F3kgonzHPGflClH5dsg0NS1HFQj6Ny2oyUupjNePOCJK +88zNehIlAkEAzoO9zrE+AoTPleVpe7TAUlZB1YMa7W1C5owjyEkv4TjIe8mpwWM/ +9vVe+SGUnc6DZy6xkk5zWmA2w18SexXJUQJBAJQbcyy1EmzCMYyJOwBrw8g8biTH +NqaMIgZjY05uTtEAa6S6kpbbdyEKDZ6mFqDd9A8QsNbco9yAY3oE/i6uLAECQHOt +a9aphZiXmEfYl3uJxejZFEtrAtxXxY+qlCiOhllcG0Drt0DyPVQyIZ7fZoX2tbhI +eYMAmrDXEBXj3VBA5eECQCLGpQKqo06QwP2qZ9mEaPB9KvVcABo97b9Lf7VUqcJx +tFWRSlpeICpDQZHqX92nwoD/2fGCH3br3o94k1oyApI= +-----END RSA PRIVATE KEY----- diff --git a/router-app/src/app.ts b/router-app/src/app.ts new file mode 100644 index 0000000..ce606b6 --- /dev/null +++ b/router-app/src/app.ts @@ -0,0 +1,21 @@ +import { App } from '@kevisual/router'; +import { httpsConfig } from './modules/config'; +export const app = new App({ + serverOptions: { + httpType: 'https', + httpsCert: httpsConfig.cert.toString(), + httpsKey: httpsConfig.key.toString(), + }, +}); +app + .route({ + path: 'demo', + }) + .define(async (ctx) => { + ctx.body = 'hello world'; + }) + .addTo(app); +console.log('httpsConfig', `https://localhost:51015/api/router?path=demo`); +app.listen(51015, () => { + console.log('Router App is running on https://localhost:51015'); +}); diff --git a/router-app/src/modules/config.ts b/router-app/src/modules/config.ts new file mode 100644 index 0000000..2d9d746 --- /dev/null +++ b/router-app/src/modules/config.ts @@ -0,0 +1,9 @@ +import fs from 'fs'; +import path from 'path'; + +const pemDir = path.join(process.cwd(), 'router-app', 'pem'); + +export const httpsConfig = { + key: fs.readFileSync(path.join(pemDir, 'https-key.pem')), + cert: fs.readFileSync(path.join(pemDir, 'https-cert.pem')), +}; diff --git a/router-app/src/modules/config/index.ts b/router-app/src/modules/config/index.ts new file mode 100644 index 0000000..9b1a1ee --- /dev/null +++ b/router-app/src/modules/config/index.ts @@ -0,0 +1,108 @@ +import path from 'path'; +import { homedir } from 'os'; +import fs from 'fs'; +import { checkFileExists, createDir } from '../file'; + +export const kevisualUrl = 'https://kevisual.xiongxiao.me'; +const configDir = createDir(path.join(homedir(), '.config/envision')); +export const configPath = path.join(configDir, 'assistant-config.json'); +export const appConfigPath = path.join(configDir, 'assistant-app-config.json'); +export const appDir = createDir(path.join(configDir, 'assistant-app/frontend')); +export const LocalElectronAppUrl = 'https://assistant.app/user/tiptap/'; + +type AssistantConfig = { + pageApi?: string; // https://kevisual.silkyai.cn + loadURL?: string; // https://assistant.app/user/tiptap/ + proxy?: { user: string; key: string; path: string }[]; +}; +let assistantConfig: AssistantConfig; +export const getConfig = () => { + try { + if (!checkFileExists(configPath)) { + fs.writeFileSync(configPath, JSON.stringify({ proxy: [] }, null, 2)); + return { + loadURL: LocalElectronAppUrl, + pageApi: '', + proxy: [], + }; + } + assistantConfig = JSON.parse(fs.readFileSync(configPath, 'utf8')); + return assistantConfig; + } catch (error) { + console.error(error); + return { + loadURL: LocalElectronAppUrl, + pageApi: '', + proxy: [], + }; + } +}; +export const getCacheAssistantConfig = () => { + if (assistantConfig) { + return assistantConfig; + } + return getConfig(); +}; + +export const setConfig = (config?: AssistantConfig) => { + if (!config) { + return assistantConfig; + } + assistantConfig = config; + fs.writeFileSync(configPath, JSON.stringify(config, null, 2)); + return assistantConfig; +}; +type AppConfig = { + list: any[]; +}; +/** + * 应用配置 + * @returns + */ +export const getAppConfig = (): AppConfig => { + if (!checkFileExists(appConfigPath)) { + return { + list: [], + }; + } + return JSON.parse(fs.readFileSync(appConfigPath, 'utf8')); +}; + +export const setAppConfig = (config: AppConfig) => { + fs.writeFileSync(appConfigPath, JSON.stringify(config, null, 2)); + return config; +}; + +export const addAppConfig = (app: any) => { + const config = getAppConfig(); + const assistantConfig = getCacheAssistantConfig(); + const _apps = config.list; + const _proxy = assistantConfig.proxy || []; + const { user, key } = app; + const newProxyInfo = { + user, + key, + path: `/${user}/${key}`, + }; + const _proxyIndex = _proxy.findIndex((_proxy: any) => _proxy.path === newProxyInfo.path); + if (_proxyIndex !== -1) { + _proxy[_proxyIndex] = newProxyInfo; + } else { + _proxy.push(newProxyInfo); + } + + const _app = _apps.findIndex((_app: any) => _app.id === app.id); + if (_app !== -1) { + _apps[_app] = app; + } else { + _apps.push(app); + } + setAppConfig({ ...config, list: _apps }); + setConfig({ ...assistantConfig, proxy: _proxy }); + return config; +}; + +export const getAppList = () => { + const config = getAppConfig(); + return config.list || []; +}; diff --git a/router-app/src/modules/file/index.ts b/router-app/src/modules/file/index.ts new file mode 100644 index 0000000..f1f45bb --- /dev/null +++ b/router-app/src/modules/file/index.ts @@ -0,0 +1,20 @@ +import fs from 'fs'; + +export const checkFileExists = (filePath: string, checkIsFile = false) => { + try { + fs.accessSync(filePath); + if (checkIsFile) { + return fs.statSync(filePath).isFile(); + } + return true; + } catch (error) { + return false; + } +}; + +export const createDir = (dirPath: string) => { + if (!checkFileExists(dirPath)) { + fs.mkdirSync(dirPath, { recursive: true }); + } + return dirPath; +}; diff --git a/router-app/src/proxy/index.ts b/router-app/src/proxy/index.ts new file mode 100644 index 0000000..8875722 --- /dev/null +++ b/router-app/src/proxy/index.ts @@ -0,0 +1,5 @@ +import http from 'http'; + +export const handleRequest = async (req: http.IncomingMessage, res: http.ServerResponse) => { + +} \ No newline at end of file diff --git a/router-app/src/scripts/create-sign.ts b/router-app/src/scripts/create-sign.ts new file mode 100644 index 0000000..9c94a76 --- /dev/null +++ b/router-app/src/scripts/create-sign.ts @@ -0,0 +1,18 @@ +import { createCert } from '@kevisual/router/sign'; +import { writeFileSync } from 'fs'; +import path from 'path'; +const pemDir = path.join(process.cwd(), 'router-app', 'pem'); + +const { key, cert } = createCert([ + { + name: 'commonName', + value: 'localhost', + }, + { + name: 'organizationName', + value: 'kevisual', + }, +]); + +writeFileSync(path.join(pemDir, 'https-key.pem'), key); +writeFileSync(path.join(pemDir, 'https-cert.pem'), cert); diff --git a/router-app/static/download.ts b/router-app/static/download.ts new file mode 100644 index 0000000..962021d --- /dev/null +++ b/router-app/static/download.ts @@ -0,0 +1,18 @@ +import fs from 'fs'; + +const apps = [ + { user: 'root', key: 'enter', version: '1.0.0' }, // + { user: 'root', key: 'packages', version: '1.0.0' }, +]; + +const baseURL = 'https://kevisual.silkyai.cn'; + +const downloadApps = () => { + // +}; + +export const downloadLink = async (url: string, path: string) => { + const res = await fetch(url); + const blob = await res.blob(); + fs.writeFileSync(path, Buffer.from(await blob.arrayBuffer())); +}; diff --git a/router-app/static/enter/electron.js b/router-app/static/enter/electron.js new file mode 100644 index 0000000..a101fbc --- /dev/null +++ b/router-app/static/enter/electron.js @@ -0,0 +1,23 @@ +export const checkIsElectron = () => { + return typeof window !== 'undefined' && typeof window.electron === 'object'; +}; +export const getElectron = () => { + return window.electron; +}; +export const saveAppConfig = async (config) => { + const check = checkIsElectron(); + if (!check) { + console.log('not electron'); + return []; + } + const electron = getElectron(); + const saveResult = await electron.ipcRenderer.invoke('save-app-config', config); + return saveResult; +}; +export const relunch = async () => { + const check = checkIsElectron(); + if (!check) { + console.log('not electron'); + return []; + } +}; \ No newline at end of file diff --git a/router-app/static/enter/index.html b/router-app/static/enter/index.html new file mode 100644 index 0000000..09ee7a6 --- /dev/null +++ b/router-app/static/enter/index.html @@ -0,0 +1,214 @@ + + + + + + Page Enter Configuration + + + +
+ +
+
+ + + + +

Page Enter Configuration

+
+ +
+
+
+ + +
+ + +
+
+
+
+ + + + + \ No newline at end of file diff --git a/router-app/static/enter/main.js b/router-app/static/enter/main.js new file mode 100644 index 0000000..3955840 --- /dev/null +++ b/router-app/static/enter/main.js @@ -0,0 +1,28 @@ +import { saveAppConfig } from './electron.js'; + +window.onload = async () => { + const config = await saveAppConfig(); + const pageApi = document.getElementById('pageApi'); + const saveResult = document.getElementById('save-result'); + pageApi.value = config?.pageApi || 'https://kevisual.silkyai.cn'; + console.log('config', config); + const form = document.getElementById('configForm'); + + // Handle form submission + form.addEventListener('submit', async (e) => { + e.preventDefault(); + const config = { + pageApi: pageApi.value, + }; + const result = await saveAppConfig(config); + + const newPageApi = result?.pageApi || ''; + saveResult.innerHTML = `

保存成功

+

new pageApi: ${newPageApi}

+ `; + const relunchButton = document.getElementById('relunch'); + relunchButton.addEventListener('click', () => { + window.electron.ipcRenderer.invoke('relunch'); + }); + }); +}; diff --git a/router-app/static/index.html b/router-app/static/index.html new file mode 100644 index 0000000..5acdf85 --- /dev/null +++ b/router-app/static/index.html @@ -0,0 +1,21 @@ + + + + + + Config Page + + + +

配置完成后重启

+ + + + + + \ No newline at end of file diff --git a/router-app/static/packages/config.js b/router-app/static/packages/config.js new file mode 100644 index 0000000..83d06af --- /dev/null +++ b/router-app/static/packages/config.js @@ -0,0 +1,3 @@ +export const config = { + appListUrl: 'http://localhost:4005/api/router?path=app&key=public-list', +}; diff --git a/router-app/static/packages/electron.js b/router-app/static/packages/electron.js new file mode 100644 index 0000000..b6b2bcf --- /dev/null +++ b/router-app/static/packages/electron.js @@ -0,0 +1,45 @@ +export const checkIsElectron = () => { + return typeof window !== 'undefined' && typeof window.electron === 'object'; +}; +export const getElectron = () => { + return window.electron; +}; +export const getAppList = async () => { + const check = checkIsElectron(); + if (!check) { + console.log('not electron'); + return []; + } + const electron = getElectron(); + console.log('electron', electron); + const appList = await electron.ipcRenderer.invoke('get-app-list'); + + console.log('appList', appList); + return appList; +}; + +export const installApp = async (app) => { + const check = checkIsElectron(); + if (!check) { + console.log('not electron'); + return []; + } + const electron = getElectron(); + console.log('installApp', app); + const result = await electron.ipcRenderer.invoke('install-app', app); + console.log('installApp result', result); + return result; +}; + +export const uninstallApp = async (app) => { + const check = checkIsElectron(); + if (!check) { + console.log('not electron'); + return []; + } + const electron = getElectron(); + console.log('uninstallApp', app); + const result = await electron.ipcRenderer.invoke('uninstall-app', app); + console.log('uninstallApp result', result); + return result; +}; diff --git a/router-app/static/packages/index.html b/router-app/static/packages/index.html new file mode 100644 index 0000000..cfd1f98 --- /dev/null +++ b/router-app/static/packages/index.html @@ -0,0 +1,17 @@ + + + + + + Package Manager + + + + +
+

Package Manager

+
+
+ + + \ No newline at end of file diff --git a/router-app/static/packages/main.js b/router-app/static/packages/main.js new file mode 100644 index 0000000..f698fe3 --- /dev/null +++ b/router-app/static/packages/main.js @@ -0,0 +1,158 @@ +import { config } from './config.js'; +import { getAppList, installApp, uninstallApp } from './electron.js'; +let installedPackages = []; +let allPackages = []; +// Store for installed packages +// const installedPackages = [ +// { user: 'test', key: 'test-key', version: '1.0.0' }, +// { user: 'demo', key: 'demo-package', version: '1.2.0' }, +// ]; + +// Function to fetch packages from API +async function fetchPackages() { + try { + // Currently using mock data + // TODO: Uncomment the following code when API is ready + const response = await fetch(config.appListUrl); + const result = await response.json(); + if (result.code === 200) { + return result.data; + } + throw new Error('Failed to fetch packages'); + } catch (error) { + console.error('Error fetching packages:', error); + return []; + } +} + +// Mock data for testing +const mockPackages = [ + { + id: '1', + title: 'Demo Package 1', + description: 'A test package for demonstration', + version: '1.0.0', + user: 'test', + key: 'test-key', + }, + { + id: '2', + title: 'Demo Package 2', + description: 'Another test package with updates', + version: '2.0.0', + user: 'demo', + key: 'demo-package', + }, + { + id: '3', + title: 'New Package', + description: "A package that hasn't been installed yet", + version: '1.0.0', + user: 'demo', + key: 'new-package', + }, +]; + +// Function to check if a package is installed +async function getPackageStatus(pkg) { + const installed = installedPackages.find((p) => p.user === pkg.user && p.key === pkg.key); + + if (!installed) return 'not-installed'; + if (installed.version !== pkg.version) return 'update-available'; + return 'installed'; +} + +// Function to create a package card +async function createPackageCard(pkg) { + const status = await getPackageStatus(pkg); + const card = document.createElement('div'); + card.className = 'package-card'; + + card.innerHTML = ` +

${pkg.title}

+

${pkg.description}

+
+ Version: ${pkg.version} + User: ${pkg.user} +
+
+ ${getActionButton(status, pkg)} + ${status !== 'not-installed' ? `` : ''} +
+ `; + + return card; +} + +// Function to get the appropriate action button based on status +function getActionButton(status, pkg) { + switch (status) { + case 'not-installed': + return ``; + case 'update-available': + return ``; + case 'installed': + return ``; + } +} + +// Action handlers +window.handleInstall = async (id) => { + console.log('Installing package:', id); + const pkg = allPackages.find((p) => p.id === id); + if (pkg) { + await installApp(pkg); + renderPackages(); + } +}; + +window.handleUpdate = async (id) => { + console.log('Updating package:', id); + const pkg = allPackages.find((p) => p.id === id); + if (pkg) { + await installApp(pkg); + renderPackages(); + } +}; + +window.handleReinstall = async (id) => { + console.log('Reinstalling package:', id); + const pkg = allPackages.find((p) => p.id === id); + if (pkg) { + await installApp(pkg); + renderPackages(); + } +}; + +window.handleUninstall = async (id) => { + console.log('Uninstalling package:', id); + // const pkg = mockPackages.find((p) => p.id === id); + const pkg = allPackages.find((p) => p.id === id); + if (pkg) { + // TODO: Replace with actual API call + const index = installedPackages.findIndex((p) => p.user === pkg.user && p.key === pkg.key); + await uninstallApp(pkg); + if (index !== -1) { + installedPackages.splice(index, 1); + renderPackages(); + } + } +}; + +// Render packages +async function renderPackages() { + const packageList = document.getElementById('package-list'); + packageList.innerHTML = ''; + const installed = await getAppList(); + installedPackages = installed; + for (const pkg of allPackages) { + packageList.appendChild(await createPackageCard(pkg)); + } +} + +// Initialize the application +document.addEventListener('DOMContentLoaded', async () => { + const packages = await fetchPackages(); + allPackages = packages; + renderPackages(); +}); diff --git a/router-app/static/packages/style.css b/router-app/static/packages/style.css new file mode 100644 index 0000000..ccb9e07 --- /dev/null +++ b/router-app/static/packages/style.css @@ -0,0 +1,115 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + color-scheme: light dark; + background-color: #fff8e1; + color: #213547; +} + +body { + margin: 0; + min-width: 320px; + min-height: 100vh; +} + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; +} + +h1 { + text-align: center; + color: #ff8f00; +} + +.package-list { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + gap: 1rem; + padding: 1rem; +} + +.package-card { + background: white; + border-radius: 8px; + padding: 1.5rem; + box-shadow: 0 2px 4px rgba(255, 143, 0, 0.1); + border: 1px solid #ffe0b2; +} + +.package-card h2 { + margin: 0 0 0.5rem 0; + color: #f57c00; +} + +.package-card .description { + color: #666; + margin-bottom: 1rem; + font-size: 0.9rem; + display: -webkit-box; + -webkit-line-clamp: 4; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + line-height: 1.5; + max-height: 6em; +} + +.package-info { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1rem; + font-size: 0.9rem; + color: #666; +} + +.button { + padding: 0.5rem 1rem; + border-radius: 4px; + border: none; + cursor: pointer; + font-weight: 500; + transition: background-color 0.2s; +} + +.button-install { + background-color: #ffa000; + color: white; +} + +.button-update { + background-color: #ff8f00; + color: white; +} + +.button-reinstall { + background-color: #ffb300; + color: white; +} + +.button-uninstall { + background-color: #ff6f00; + color: white; +} + +.button:hover { + opacity: 0.9; +} + +.button:disabled { + background-color: #ffe0b2; + cursor: not-allowed; +} + +.error-message { + text-align: center; + color: #ff6f00; + padding: 2rem; + background: white; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(255, 143, 0, 0.1); + grid-column: 1 / -1; +} \ No newline at end of file diff --git a/src/main/handle/index.ts b/src/main/handle/index.ts new file mode 100644 index 0000000..90b08ae --- /dev/null +++ b/src/main/handle/index.ts @@ -0,0 +1,35 @@ +import { ipcMain } from 'electron'; +import { getAppList, getCacheAssistantConfig, setConfig } from '@/modules/config'; +import { installApp, uninstallApp } from '../proxy/install'; +import { relunch } from '../window/relunch'; + +export const handle = () => { + ipcMain.handle('get-app-list', (event, data) => { + // 获取应用路径 + const appList = getAppList(); + return appList; + }); + + ipcMain.handle('install-app', (event, data) => { + console.log('install-app', data.user, data.key, data.version); + return installApp(data); + }); + + ipcMain.handle('uninstall-app', (event, data) => { + console.log('uninstall-app', data.user, data.key, data.version); + return uninstallApp(data); + }); + + ipcMain.handle('save-app-config', (event, data) => { + console.log('save-app-config', data); + if (!data) { + return getCacheAssistantConfig(); + } + const config = getCacheAssistantConfig(); + return setConfig({ ...config, ...data }); + }); + + ipcMain.handle('relunch', () => { + relunch(); + }); +}; diff --git a/src/main/index.ts b/src/main/index.ts new file mode 100644 index 0000000..ade18f4 --- /dev/null +++ b/src/main/index.ts @@ -0,0 +1,47 @@ +import { app, BrowserWindow, ipcMain, session } from 'electron'; +import * as path from 'path'; +import { fileURLToPath } from 'url'; +import { LocalElectronAppUrl } from '../modules/config'; +import { createSession } from './session'; +import { handle } from './handle'; +import { loadMenu } from './menu'; +import { checkShowPage } from './window/page'; +import { createIntroducePage } from './window/page/introduce'; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +let mainWindow: BrowserWindow | null; + +async function createWindow() { + const _session = createSession(); + mainWindow = new BrowserWindow({ + width: 800, + height: 600, + webPreferences: { + preload: path.join(__dirname, 'preload.js'), // 如果有 preload 脚本 + session: _session, + }, + }); + loadMenu(); + await checkShowPage(mainWindow); + + mainWindow.on('closed', () => { + mainWindow = null; + }); +} + +app.on('ready', createWindow); + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit(); + } +}); + +app.on('activate', () => { + if (mainWindow === null) { + createWindow(); + } +}); + +handle(); diff --git a/src/main/logger.ts b/src/main/logger.ts new file mode 100644 index 0000000..8c80e85 --- /dev/null +++ b/src/main/logger.ts @@ -0,0 +1,6 @@ +import log from 'electron-log'; +// $Home/Library/Logs/ads-desktop-electron/main.log +log.initialize({ preload: true }); +export { log }; + +export const getLogPath = () => log.transports.file.getFile().path; diff --git a/src/main/menu/index.ts b/src/main/menu/index.ts new file mode 100644 index 0000000..d268fe2 --- /dev/null +++ b/src/main/menu/index.ts @@ -0,0 +1,117 @@ +import { createEnterPage } from '../window/page/enter'; +import { BrowserWindow, Menu, app } from 'electron'; + +import path from 'path'; +import { getLogPath, log } from '../logger'; +import { createAppPackagesPage } from '../window/page/app-packages'; +import { relunch } from '../window/relunch'; +export const loadMenu = () => { + const template = [ + { + label: app.name, + submenu: [ + { + label: '关于', + role: 'about', + }, + { + label: '退出', + click: () => { + if (process.platform !== 'darwin') { + app.quit(); + } else { + app.exit(); + } + }, + }, + // { + // label: '检查更新', + // click: () => { + // autoUpdater.checkForUpdatesAndNotify(); + // }, + // }, + ], + }, + { + label: '编辑', + submenu: [ + { label: '复制', accelerator: 'CmdOrCtrl+C', selector: 'copy:' }, + { label: '粘贴', accelerator: 'CmdOrCtrl+V', selector: 'paste:' }, + ], + }, + { + label: '查看', + role: 'view', + submenu: [ + { + label: '刷新', + role: 'reload', + }, + { + label: '强制刷新', + role: 'forcereload', + }, + { + label: '重启', + click: () => { + relunch(); + }, + }, + { + label: '打开开发者工具', + click: () => { + const mainWindow = BrowserWindow.getFocusedWindow(); + if (mainWindow) { + openDevTools(mainWindow); + } + }, + }, + ], + }, + { + label: '帮助', + role: 'help', + submenu: [ + { + label: '文档', + click: async () => { + const { shell } = require('electron'); + // shell.openExternal('http://adstudio.nisar.ai/docs/'); + }, + }, + { + label: '打开日志', + click: async () => { + const { shell } = require('electron'); + log.transports.file.fileName; + shell.openExternal('file://' + path.join(getLogPath())); + }, + }, + { + label: '打开配置', + click: async () => { + createEnterPage(); + }, + }, + { + label: '打开应用市场', + click: async () => { + createAppPackagesPage(); + }, + }, + ], + }, + ]; + // @ts-ignore + const menu = Menu.buildFromTemplate(template); + Menu.setApplicationMenu(menu); +}; + +export const openDevTools = (mainWindow: BrowserWindow) => { + let window = mainWindow.getBrowserView() ? mainWindow.getBrowserView() : mainWindow; + if (window.webContents.isDevToolsOpened()) { + window.webContents.closeDevTools(); + } else { + window.webContents.openDevTools(); + } +}; diff --git a/src/main/preload.js b/src/main/preload.js new file mode 100644 index 0000000..7f1bc57 --- /dev/null +++ b/src/main/preload.js @@ -0,0 +1,19 @@ +const { contextBridge, ipcRenderer } = require('electron'); + +const windowChannels = ['relunch']; +const validChannels = ['get-app-list', 'install-app', 'uninstall-app', 'save-app-config', ...windowChannels]; + +contextBridge.exposeInMainWorld('electron', { + ipcRenderer: { + on(channel, func) { + if (validChannels.includes(channel)) { + ipcRenderer.on(channel, func); + } + }, + invoke(channel, ...args) { + if (validChannels.includes(channel)) { + return ipcRenderer.invoke(channel, ...args); + } + }, + }, +}); diff --git a/src/main/proxy/api-proxy.ts b/src/main/proxy/api-proxy.ts new file mode 100644 index 0000000..ea34652 --- /dev/null +++ b/src/main/proxy/api-proxy.ts @@ -0,0 +1,12 @@ +export const apiProxyList = [ + { + path: '/v1', + }, + { + path: '/v2', + }, + { + path: '/api', + }, +]; + diff --git a/src/main/proxy/index.ts b/src/main/proxy/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/main/proxy/install.ts b/src/main/proxy/install.ts new file mode 100644 index 0000000..6c88197 --- /dev/null +++ b/src/main/proxy/install.ts @@ -0,0 +1,141 @@ +import path from 'path'; +import fs from 'fs'; +import { appDir, kevisualUrl, addAppConfig, getAppConfig, setAppConfig, getCacheAssistantConfig, setConfig } from '../../modules/config'; + +export const demoData = { + id: '471ee96f-d7d8-4da1-b84f-4a34f4732f16', + title: 'tiptap', + description: '', + data: { + files: [ + { + name: 'README.md', + path: 'user/tiptap/0.0.1/README.md', + }, + { + name: 'app.css', + path: 'user/tiptap/0.0.1/app.css', + }, + { + name: 'app.js', + path: 'user/tiptap/0.0.1/app.js', + }, + { + name: 'create-BxEwtceK.js', + path: 'user/tiptap/0.0.1/create-BxEwtceK.js', + }, + { + name: 'index.CrTXFMOJ.js', + path: 'user/tiptap/0.0.1/index.CrTXFMOJ.js', + }, + { + name: 'index.html', + path: 'user/tiptap/0.0.1/index.html', + }, + ], + }, + version: '0.0.1', + domain: '', + appType: '', + key: 'tiptap', + type: '', + uid: '2bebe6a0-3c64-4a64-89f9-cc47fd082a07', + pid: null, + proxy: false, + user: 'user', + status: 'running', + createdAt: '2024-12-14T15:39:30.684Z', + updatedAt: '2024-12-14T15:39:55.714Z', + deletedAt: null, +}; + +type DownloadTask = { + downloadPath: string; + downloadUrl: string; + user: string; + key: string; + version: string; +}; +export const installApp = async (app: any) => { + // const _app = demoData; + const _app = app; + try { + let files = _app.data.files || []; + const version = _app.version; + const user = _app.user; + const key = _app.key; + + const downFiles = files.map((file: any) => { + const noVersionPath = file.path.replace(`/${version}`, ''); + return { + ...file, + downloadPath: path.join(appDir, noVersionPath), + downloadUrl: `${kevisualUrl}/${noVersionPath}`, + }; + }); + const downloadTasks: DownloadTask[] = downFiles as any; + for (const file of downloadTasks) { + const downloadPath = file.downloadPath; + const downloadUrl = file.downloadUrl; + const dir = path.dirname(downloadPath); + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }); + } + const res = await fetch(downloadUrl); + const blob = await res.blob(); + fs.writeFileSync(downloadPath, Buffer.from(await blob.arrayBuffer())); + } + let indexHtml = files.find((file: any) => file.name === 'index.html'); + if (!indexHtml) { + files.push({ + name: 'index.html', + path: `${user}/${key}/index.html`, + }); + fs.writeFileSync(path.join(appDir, `${user}/${key}/index.html`), JSON.stringify(app, null, 2)); + } + _app.data.files = files; + addAppConfig(_app); + return { + code: 200, + data: _app, + message: 'Install app success', + }; + } catch (error) { + console.error(error); + return { + code: 500, + message: 'Install app failed', + }; + } +}; + +export const uninstallApp = async (app: any) => { + try { + const { user, key } = app; + const appConfig = getAppConfig(); + const index = appConfig.list.findIndex((item: any) => item.user === user && item.key === key); + if (index !== -1) { + appConfig.list.splice(index, 1); + setAppConfig(appConfig); + // 删除appDir和文件 + fs.rmSync(path.join(appDir, user, key), { recursive: true }); + // 删除proxy + const proxyConfig = getCacheAssistantConfig(); + const proxyIndex = proxyConfig.proxy.findIndex((item: any) => item.user === user && item.key === key); + if (proxyIndex !== -1) { + proxyConfig.proxy.splice(proxyIndex, 1); + setConfig(proxyConfig); + } + } + return { + code: 200, + message: 'Uninstall app success', + }; + } catch (error) { + console.error(error); + return { + code: 500, + message: 'Uninstall app failed', + }; + } +}; diff --git a/src/main/renderer.ts b/src/main/renderer.ts new file mode 100644 index 0000000..053cd15 --- /dev/null +++ b/src/main/renderer.ts @@ -0,0 +1,6 @@ +// This file is required by the index.html file and will +// be executed in the renderer process for that window. +// No Node.js APIs are available in this process unless +// nodeIntegration is set to true in webPreferences. +// Use preload.js to selectively enable features +// needed in the renderer process. \ No newline at end of file diff --git a/src/main/session/index.ts b/src/main/session/index.ts new file mode 100644 index 0000000..7cc155c --- /dev/null +++ b/src/main/session/index.ts @@ -0,0 +1,57 @@ +import { app, BrowserWindow, ipcMain, session } from 'electron'; +import { getCacheAssistantConfig, appDir, LocalElectronAppUrl } from '../../modules/config'; +import { net } from 'electron'; +import path from 'path'; +import * as url from 'url'; +import { checkFileExists } from '../../modules/file'; +import { apiProxyList } from '../proxy/api-proxy'; + +let _session: Electron.Session; +export const createSession = () => { + if (_session) { + return _session; + } + // 创建一个持久化的会话 + _session = session.fromPartition('persist:app'); + + _session.protocol.handle('https', async (req) => { + const requrl = req.url; + const newReqUrl = new URL(requrl); + const localOrigin = new URL(LocalElectronAppUrl).origin; + if (newReqUrl.origin !== localOrigin) { + // 不拦截 + return net.fetch(req.url, { bypassCustomProtocolHandlers: true }); + } + const apiProxy = apiProxyList.find((_proxy: any) => newReqUrl.pathname.startsWith(_proxy.path)); + if (apiProxy) { + const pageApi = getCacheAssistantConfig().pageApi || ''; + if (!pageApi) { + return new Response(`App Page Api Not Set, please set it first`); + } + const newPageUrl = new URL(req.url, pageApi); + return net.fetch(newPageUrl.toString(), { bypassCustomProtocolHandlers: true }); + } + const [user, key] = newReqUrl.pathname.split('/').slice(1); + const proxyList = getCacheAssistantConfig().proxy || []; + const proxy = proxyList.find((_proxy: any) => newReqUrl.pathname.startsWith(_proxy.path)); + if (proxy) { + try { + const relativePath = path.join(appDir, newReqUrl.pathname); + const indexHtml = path.join(appDir, user, key, 'index.html'); + console.log('relativePath', relativePath); + if (checkFileExists(relativePath, true)) { + const res = await net.fetch(url.pathToFileURL(relativePath).toString()); + return res; + } else { + const res = await net.fetch(url.pathToFileURL(indexHtml).toString()); + return res; + } + } catch (error) { + console.error(error); + } + return new Response('App is Running Error, please reinstall it or refresh the page'); + } + return new Response(`App Not Install, please install it first,user/app: [${user}/${key}]`); + }); + return _session; +}; diff --git a/src/main/window/page/app-packages.ts b/src/main/window/page/app-packages.ts new file mode 100644 index 0000000..b5ec447 --- /dev/null +++ b/src/main/window/page/app-packages.ts @@ -0,0 +1,19 @@ +import { BrowserWindow } from 'electron'; +import path from 'path'; +import { fileURLToPath } from 'url'; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +export const createAppPackagesPage = (window?: BrowserWindow) => { + const mainWindow = + window || + new BrowserWindow({ + width: 800, + height: 600, + webPreferences: { + preload: path.join(__dirname, 'preload.js'), // 如果有 preload 脚本 + }, + }); + mainWindow.loadFile(path.join(__dirname, '../renderer/packages/index.html')); // Vite 构建后的文件 + return mainWindow; +}; diff --git a/src/main/window/page/enter.ts b/src/main/window/page/enter.ts new file mode 100644 index 0000000..8003b4d --- /dev/null +++ b/src/main/window/page/enter.ts @@ -0,0 +1,19 @@ +import { BrowserWindow } from 'electron'; +import path from 'path'; +import { fileURLToPath } from 'url'; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +export const createEnterPage = (window?: BrowserWindow) => { + const mainWindow = + window || + new BrowserWindow({ + width: 800, + height: 600, + webPreferences: { + preload: path.join(__dirname, 'preload.js'), // 如果有 preload 脚本 + }, + }); + mainWindow.loadFile(path.join(__dirname, '../renderer/enter/index.html')); // Vite 构建后的文件 + return mainWindow; +}; diff --git a/src/main/window/page/index.ts b/src/main/window/page/index.ts new file mode 100644 index 0000000..02b9f22 --- /dev/null +++ b/src/main/window/page/index.ts @@ -0,0 +1,18 @@ +import { getCacheAssistantConfig, LocalElectronAppUrl } from '@/modules/config'; +import { createEnterPage } from './enter'; +import { createAppPackagesPage } from './app-packages'; +import { BrowserWindow } from 'electron'; + +export const checkShowPage = async (window?: BrowserWindow) => { + const assistantConfig = getCacheAssistantConfig(); + const { pageApi, proxy } = assistantConfig; + if (!pageApi) { + createEnterPage(window); + return; + } + if (!proxy || proxy.length === 0) { + createAppPackagesPage(window); + return; + } + return window?.loadURL(LocalElectronAppUrl); +}; diff --git a/src/main/window/page/introduce.ts b/src/main/window/page/introduce.ts new file mode 100644 index 0000000..312639b --- /dev/null +++ b/src/main/window/page/introduce.ts @@ -0,0 +1,19 @@ +import { BrowserWindow } from 'electron'; +import path from 'path'; +import { fileURLToPath } from 'url'; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +export const createIntroducePage = (window?: BrowserWindow) => { + const mainWindow = + window || + new BrowserWindow({ + width: 800, + height: 600, + webPreferences: { + preload: path.join(__dirname, 'preload.js'), // 如果有 preload 脚本 + }, + }); + mainWindow.loadFile(path.join(__dirname, '../renderer/index.html')); // + return mainWindow; +}; diff --git a/src/main/window/relunch.ts b/src/main/window/relunch.ts new file mode 100644 index 0000000..198761a --- /dev/null +++ b/src/main/window/relunch.ts @@ -0,0 +1,6 @@ +import { app } from 'electron'; + +export const relunch = () => { + app.relaunch({}); + app.quit(); +}; diff --git a/src/main/window/window-manager.ts b/src/main/window/window-manager.ts new file mode 100644 index 0000000..680d0ca --- /dev/null +++ b/src/main/window/window-manager.ts @@ -0,0 +1,11 @@ +import { BrowserWindow } from 'electron'; + +export class WindowsManager { + static window: BrowserWindow; + static setWindow = (window: BrowserWindow) => { + WindowsManager.window = window; + }; + static getWindow = () => { + return WindowsManager.window; + }; +} diff --git a/src/modules/config/index.ts b/src/modules/config/index.ts new file mode 100644 index 0000000..9b1a1ee --- /dev/null +++ b/src/modules/config/index.ts @@ -0,0 +1,108 @@ +import path from 'path'; +import { homedir } from 'os'; +import fs from 'fs'; +import { checkFileExists, createDir } from '../file'; + +export const kevisualUrl = 'https://kevisual.xiongxiao.me'; +const configDir = createDir(path.join(homedir(), '.config/envision')); +export const configPath = path.join(configDir, 'assistant-config.json'); +export const appConfigPath = path.join(configDir, 'assistant-app-config.json'); +export const appDir = createDir(path.join(configDir, 'assistant-app/frontend')); +export const LocalElectronAppUrl = 'https://assistant.app/user/tiptap/'; + +type AssistantConfig = { + pageApi?: string; // https://kevisual.silkyai.cn + loadURL?: string; // https://assistant.app/user/tiptap/ + proxy?: { user: string; key: string; path: string }[]; +}; +let assistantConfig: AssistantConfig; +export const getConfig = () => { + try { + if (!checkFileExists(configPath)) { + fs.writeFileSync(configPath, JSON.stringify({ proxy: [] }, null, 2)); + return { + loadURL: LocalElectronAppUrl, + pageApi: '', + proxy: [], + }; + } + assistantConfig = JSON.parse(fs.readFileSync(configPath, 'utf8')); + return assistantConfig; + } catch (error) { + console.error(error); + return { + loadURL: LocalElectronAppUrl, + pageApi: '', + proxy: [], + }; + } +}; +export const getCacheAssistantConfig = () => { + if (assistantConfig) { + return assistantConfig; + } + return getConfig(); +}; + +export const setConfig = (config?: AssistantConfig) => { + if (!config) { + return assistantConfig; + } + assistantConfig = config; + fs.writeFileSync(configPath, JSON.stringify(config, null, 2)); + return assistantConfig; +}; +type AppConfig = { + list: any[]; +}; +/** + * 应用配置 + * @returns + */ +export const getAppConfig = (): AppConfig => { + if (!checkFileExists(appConfigPath)) { + return { + list: [], + }; + } + return JSON.parse(fs.readFileSync(appConfigPath, 'utf8')); +}; + +export const setAppConfig = (config: AppConfig) => { + fs.writeFileSync(appConfigPath, JSON.stringify(config, null, 2)); + return config; +}; + +export const addAppConfig = (app: any) => { + const config = getAppConfig(); + const assistantConfig = getCacheAssistantConfig(); + const _apps = config.list; + const _proxy = assistantConfig.proxy || []; + const { user, key } = app; + const newProxyInfo = { + user, + key, + path: `/${user}/${key}`, + }; + const _proxyIndex = _proxy.findIndex((_proxy: any) => _proxy.path === newProxyInfo.path); + if (_proxyIndex !== -1) { + _proxy[_proxyIndex] = newProxyInfo; + } else { + _proxy.push(newProxyInfo); + } + + const _app = _apps.findIndex((_app: any) => _app.id === app.id); + if (_app !== -1) { + _apps[_app] = app; + } else { + _apps.push(app); + } + setAppConfig({ ...config, list: _apps }); + setConfig({ ...assistantConfig, proxy: _proxy }); + return config; +}; + +export const getAppList = () => { + const config = getAppConfig(); + return config.list || []; +}; diff --git a/src/modules/file/index.ts b/src/modules/file/index.ts new file mode 100644 index 0000000..f1f45bb --- /dev/null +++ b/src/modules/file/index.ts @@ -0,0 +1,20 @@ +import fs from 'fs'; + +export const checkFileExists = (filePath: string, checkIsFile = false) => { + try { + fs.accessSync(filePath); + if (checkIsFile) { + return fs.statSync(filePath).isFile(); + } + return true; + } catch (error) { + return false; + } +}; + +export const createDir = (dirPath: string) => { + if (!checkFileExists(dirPath)) { + fs.mkdirSync(dirPath, { recursive: true }); + } + return dirPath; +}; diff --git a/src/renderer/assistant-center.tgz b/src/renderer/assistant-center.tgz new file mode 100644 index 0000000..577adb3 Binary files /dev/null and b/src/renderer/assistant-center.tgz differ diff --git a/src/renderer/assistant-center/package.json b/src/renderer/assistant-center/package.json new file mode 100644 index 0000000..497ed04 --- /dev/null +++ b/src/renderer/assistant-center/package.json @@ -0,0 +1,76 @@ +{ + "name": "assistant-center", + "version": "0.0.1", + "description": "", + "main": "index.js", + "app": { + "key": "assistant-center", + "entry": "dist/app.mjs", + "type": "system-app", + "files": [ + "dist", + "pem", + "root" + ] + }, + "scripts": { + "watch": "rollup -c rollup.config.mjs -w", + "dev": "cross-env NODE_ENV=development nodemon --delay 2.5 -e js,cjs,mjs --exec node dist/app.mjs", + "build": "rollup -c rollup.config.mjs", + "test": "tsx test/**/*.ts", + "dev:watch": "cross-env NODE_ENV=development concurrently -n \"Watch,Dev\" -c \"green,blue\" \"npm run watch\" \"sleep 1 && npm run dev\" ", + "clean": "rm -rf dist", + "prepub": "envision switch root", + "pub": "npm run build && envision pack -p -u" + }, + "keywords": [], + "author": "abearxiong ", + "license": "MIT", + "type": "module", + "types": "types/index.d.ts", + "files": [ + "dist", + "pem", + "root" + ], + "dependencies": { + "@kevisual/code-center-module": "0.0.13", + "@kevisual/mark": "0.0.7", + "@kevisual/router": "0.0.9", + "cookie": "^1.0.2", + "dayjs": "^1.11.13", + "formidable": "^3.5.2", + "json5": "^2.2.3", + "lodash-es": "^4.17.21", + "ws": "^8.18.1" + }, + "devDependencies": { + "@kevisual/assistant-module": "workspace:*", + "@kevisual/types": "^0.0.6", + "@kevisual/use-config": "^1.0.9", + "@rollup/plugin-alias": "^5.1.1", + "@rollup/plugin-commonjs": "^28.0.3", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.0", + "@rollup/plugin-replace": "^6.0.2", + "@rollup/plugin-typescript": "^12.1.2", + "@types/crypto-js": "^4.2.2", + "@types/formidable": "^3.4.5", + "@types/lodash-es": "^4.17.12", + "@types/node": "^22.13.9", + "@types/ws": "^8.18.0", + "concurrently": "^9.1.2", + "cross-env": "^7.0.3", + "nodemon": "^3.1.9", + "pm2": "^5.4.3", + "rimraf": "^6.0.1", + "rollup": "^4.34.9", + "rollup-plugin-copy": "^3.5.0", + "rollup-plugin-dts": "^6.1.1", + "rollup-plugin-esbuild": "^6.2.1", + "tape": "^5.9.0", + "tsx": "^4.19.3", + "typescript": "^5.8.2" + }, + "pnpm": {} +} \ No newline at end of file diff --git a/src/renderer/assistant-center/pem/https-cert.pem b/src/renderer/assistant-center/pem/https-cert.pem new file mode 100644 index 0000000..68f4fce --- /dev/null +++ b/src/renderer/assistant-center/pem/https-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICXTCCAcagAwIBAgIJHsP036vqWER/MA0GCSqGSIb3DQEBBQUAMF8xCjAIBgNV +BAMTASoxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhaaGVKaWFuZzERMA8GA1UEBxMI +SGFuZ3pob3UxETAPBgNVBAoTCEVudmlzaW9uMQswCQYDVQQLEwJJVDAeFw0yNTAz +MDcxNDIwMTJaFw0yNjAzMDcxNDIwMTJaMF8xCjAIBgNVBAMTASoxCzAJBgNVBAYT +AkNOMREwDwYDVQQIEwhaaGVKaWFuZzERMA8GA1UEBxMISGFuZ3pob3UxETAPBgNV +BAoTCEVudmlzaW9uMQswCQYDVQQLEwJJVDCBnzANBgkqhkiG9w0BAQEFAAOBjQAw +gYkCgYEAquA2XnwduVSJHvnTW4r5yodz/joTPUi+r8kS/KJyR/NQ5xovtDY2gJoO +nJk8qekcLKuofskIIu4HFsCE7AYBkQGaYmc+0cCQCmEpwivesbeMB0ydz+6NwLQn +32HVjtMtx3gUcywGdMntiQb/P9FIhtE132wOmW9PeSl0dx/nyrUCAwEAAaMhMB8w +HQYDVR0RBBYwFIIBKoIJbG9jYWxob3N0hwR/AAABMA0GCSqGSIb3DQEBBQUAA4GB +AJsjIZgb6iE4OTXoEDiBPmHM+byWs20K2eCvi79V9/vns90IroBQfGirIsovv923 +SqjmdAFsZkRUbZvX99lBX0mmZK9KTE4K9YUm7bv+d8+fBPxAgNFSTRiSNBeNh0Lh +HdJUiI/tzIfI6RRg1pFDC1tOG083Cl/YElN879w3Iipi +-----END CERTIFICATE----- diff --git a/src/renderer/assistant-center/pem/https-key.pem b/src/renderer/assistant-center/pem/https-key.pem new file mode 100644 index 0000000..7263037 --- /dev/null +++ b/src/renderer/assistant-center/pem/https-key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQCq4DZefB25VIke+dNbivnKh3P+OhM9SL6vyRL8onJH81DnGi+0 +NjaAmg6cmTyp6Rwsq6h+yQgi7gcWwITsBgGRAZpiZz7RwJAKYSnCK96xt4wHTJ3P +7o3AtCffYdWO0y3HeBRzLAZ0ye2JBv8/0UiG0TXfbA6Zb095KXR3H+fKtQIDAQAB +AoGADDEbL/qjFEoXzoH8tpdf4zdu60CxhrneASTTmfrtNH0D1LlllfIYSWy0hi/Y +yDa9r+I/j2xAjF13XAQ4d66mBdjCRATLx/aL495o+e6NkIBEAgdP88hHm13F6gg+ +h8iMixs5mkwU41sghnCYeBqlziKPi8fsoTmhK0VETFUtDQECQQDT0kZ7OCEVNcz0 +LAUPO7ukeHAYnGYns+Q3F3kgonzHPGflClH5dsg0NS1HFQj6Ny2oyUupjNePOCJK +88zNehIlAkEAzoO9zrE+AoTPleVpe7TAUlZB1YMa7W1C5owjyEkv4TjIe8mpwWM/ +9vVe+SGUnc6DZy6xkk5zWmA2w18SexXJUQJBAJQbcyy1EmzCMYyJOwBrw8g8biTH +NqaMIgZjY05uTtEAa6S6kpbbdyEKDZ6mFqDd9A8QsNbco9yAY3oE/i6uLAECQHOt +a9aphZiXmEfYl3uJxejZFEtrAtxXxY+qlCiOhllcG0Drt0DyPVQyIZ7fZoX2tbhI +eYMAmrDXEBXj3VBA5eECQCLGpQKqo06QwP2qZ9mEaPB9KvVcABo97b9Lf7VUqcJx +tFWRSlpeICpDQZHqX92nwoD/2fGCH3br3o94k1oyApI= +-----END RSA PRIVATE KEY----- diff --git a/src/renderer/assistant-center/root/assistant-base-app/assets/Enter-BnWSbQup.js b/src/renderer/assistant-center/root/assistant-base-app/assets/Enter-BnWSbQup.js new file mode 100644 index 0000000..70ebb34 --- /dev/null +++ b/src/renderer/assistant-center/root/assistant-base-app/assets/Enter-BnWSbQup.js @@ -0,0 +1,9 @@ +import{u as h,r as o,j as e}from"./index-OAiiq-Mf.js";const m=()=>{const{config:s,getConfig:l,saveConfig:r}=h();o.useEffect(()=>{c(),l()},[]),o.useEffect(()=>{if(s.pageApi){const a=document.getElementById("pageApi");a.value=s.pageApi}},[s]);const c=()=>{const a=document.getElementById("particles"),p=20;if(a)for(let i=0;i + + + + + + + `;const n=10+Math.random()*20;t.style.width=`${n}px`,t.style.height=`${n}px`,t.style.left=`${Math.random()*100}%`,t.style.top=`${Math.random()*100}%`,t.style.animationDuration=`${5+Math.random()*5}s`,t.style.animationDelay=`${Math.random()*5}s`,a.appendChild(t)}},d=()=>{const a=document.getElementById("pageApi");r(a.value)};return e.jsxs("div",{className:"h-full w-full p-4 pt-10",children:[e.jsx("div",{className:"particles",id:"particles"}),e.jsxs("div",{className:"container",children:[e.jsxs("div",{className:"header",children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}),e.jsx("circle",{cx:"12",cy:"12",r:"3"})]}),e.jsx("h1",{children:"Page Enter Configuration"})]}),e.jsxs("div",{className:"form-container",children:[e.jsxs("form",{id:"configForm",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"pageApi",children:"Page Enter Api"}),e.jsx("input",{type:"text",id:"pageApi",placeholder:"Enter page api configuration"})]}),e.jsxs("button",{type:"submit",id:"save-button",onClick:d,children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),e.jsx("polyline",{points:"17 21 17 13 7 13 7 21"}),e.jsx("polyline",{points:"7 3 7 8 15 8"})]}),"Save Configuration"]})]}),e.jsx("div",{id:"save-result"})]})]})]})};export{m as default}; diff --git a/src/renderer/assistant-center/root/assistant-base-app/assets/Enter-CoE7l2Yc.css b/src/renderer/assistant-center/root/assistant-base-app/assets/Enter-CoE7l2Yc.css new file mode 100644 index 0000000..b3ad898 --- /dev/null +++ b/src/renderer/assistant-center/root/assistant-base-app/assets/Enter-CoE7l2Yc.css @@ -0,0 +1 @@ +*{box-sizing:border-box}body{min-height:100vh;background:linear-gradient(135deg,#fef3c7,#fffbeb);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;position:relative;overflow-x:hidden}.container{max-width:42rem;margin:0 auto}.header{display:flex;align-items:center;gap:.75rem;margin-bottom:2rem}.header svg{width:2rem;height:2rem;color:#d97706;animation:spin 8s linear infinite}.header h1{font-size:1.875rem;font-weight:700;color:#92400e}.form-container{background:#fffc;backdrop-filter:blur(8px);border-radius:1rem;box-shadow:0 4px 6px #d977061a;padding:2rem;transition:all .3s ease}.form-container:hover{box-shadow:0 8px 12px #d9770626}.form-group{margin-bottom:1.5rem}label{display:block;font-size:.875rem;font-weight:500;color:#92400e;margin-bottom:.25rem}input[type=text]{width:100%;padding:.75rem 1rem;border:1px solid #fbbf24;border-radius:.5rem;font-size:1rem;transition:all .2s}input[type=text]:focus{outline:none;border-color:#d97706;box-shadow:0 0 0 3px #d9770633}button{width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem;background-color:#d97706;color:#fff;padding:.75rem 1.5rem;border:none;border-radius:.5rem;font-size:1rem;font-weight:500;cursor:pointer;transition:background-color .2s}button:hover{background-color:#b45309}.particles{position:absolute;inset:0;pointer-events:none;overflow:hidden}.particle{position:absolute;color:#fbbf24;opacity:.3;animation:float 5s ease-in-out infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-20px) rotate(10deg)}} diff --git a/src/renderer/assistant-center/root/assistant-base-app/assets/index-B3OKg3E6.js b/src/renderer/assistant-center/root/assistant-base-app/assets/index-B3OKg3E6.js new file mode 100644 index 0000000..74dd6ed --- /dev/null +++ b/src/renderer/assistant-center/root/assistant-base-app/assets/index-B3OKg3E6.js @@ -0,0 +1,31 @@ +import{c as v,y as d,a as f,q as N,r as u,u as C,j as n}from"./index-OAiiq-Mf.js";const $=v((t,i)=>({installedPackages:[],shopPackages:[],setInstalledPackages:s=>t({installedPackages:s}),setShopPackages:s=>t({shopPackages:s}),getInstalledPackages:async()=>{const s=await f.post({path:"shop",key:"list-installed"});return s.code===200&&t({installedPackages:s.data}),s.data},getShopPackages:async()=>{const s=await N.post({path:"app",key:"public-list"});return s.code===200&&t({shopPackages:s.data}),s.data},uninstallPackage:async s=>{const c=await f.post({path:"shop",key:"uninstall",data:{pkg:s}});c.code===200?(i().getInstalledPackages(),d.success("Package uninstalled successfully")):d.error(c.message||"Failed to uninstall package"),console.log("uninstallPackage",c)},installPackage:async s=>{const c=d.loading("Installing package..."),o=await f.post({path:"shop",key:"install",data:{pkg:s}});d.dismiss(c),o.code===200?(i().getInstalledPackages(),d.success("Package installed successfully")):d.error(o.message||"Failed to install package"),console.log("installPackage",o)}}));/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),x=(...t)=>t.filter((i,s,c)=>!!i&&i.trim()!==""&&c.indexOf(i)===s).join(" ").trim();/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var A={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U=u.forwardRef(({color:t="currentColor",size:i=24,strokeWidth:s=2,absoluteStrokeWidth:c,className:o="",children:r,iconNode:h,...p},k)=>u.createElement("svg",{ref:k,...A,width:i,height:i,stroke:t,strokeWidth:c?Number(s)*24/Number(i):s,className:x("lucide",o),...p},[...h.map(([g,m])=>u.createElement(g,m)),...Array.isArray(r)?r:[r]]));/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b=(t,i)=>{const s=u.forwardRef(({className:c,...o},r)=>u.createElement(U,{ref:r,iconNode:i,className:x(`lucide-${I(t)}`,c),...o}));return s.displayName=`${t}`,s};/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S=[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]],q=b("Link2",S);/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R=[["path",{d:"M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6",key:"y09zxi"}],["path",{d:"m21 3-9 9",key:"mpx6sq"}],["path",{d:"M15 3h6v6",key:"1q9fwt"}]],E=b("SquareArrowOutUpRight",R),M=()=>{const{shopPackages:t,installedPackages:i,getInstalledPackages:s,getShopPackages:c,uninstallPackage:o,installPackage:r}=$(),{pageApi:h}=C();u.useEffect(()=>{s(),c()},[]);const p=e=>{const a=i.find(l=>l.user===e.user&&l.key===e.key);return a?a.version!==e.version?"update-available":"installed":"not-installed"},k=e=>{const a=t.find(l=>l.id===e);a&&r(a)},g=e=>{const a=t.find(l=>l.id===e);a&&r(a)},m=e=>{const a=t.find(l=>l.id===e);a&&r(a)},y=e=>{const a=t.find(l=>l.id===e);a&&o(a)},P=(e,a)=>{switch(e){case"not-installed":return n.jsx("button",{className:"button button-install",onClick:()=>k(a.id),children:"Install"});case"update-available":return n.jsx("button",{className:"button button-update",onClick:()=>g(a.id),children:"Update"});case"installed":return n.jsx("button",{className:"button button-reinstall",onClick:()=>m(a.id),children:"Reinstall"})}},w=e=>{const a="https://kevisual.silkyai.cn",l=`/${e.user}/${e.key}`;window.open(`${a}${l}`,"_blank")},j=e=>{if(!h)return;const a=h,l=`/${e.user}/${e.key}`;window.open(`${a}${l}`,"_blank")};return n.jsxs("div",{id:"app",children:[n.jsx("h1",{children:"Package Manager"}),n.jsx("div",{className:"package-list",children:t.map(e=>{const a=p(e),l=a!=="not-installed";return n.jsxs("div",{className:"package-card",children:[n.jsx("h2",{children:e.title}),n.jsx("p",{className:"description",children:e.description}),n.jsxs("div",{className:"package-info",children:[n.jsxs("span",{children:["Version: ",e.version]}),n.jsxs("span",{children:["User: ",e.user]})]}),n.jsxs("div",{className:"actions",children:[P(a,e),a!=="not-installed"&&n.jsx("button",{className:"button button-uninstall",onClick:()=>y(e.id),children:"Uninstall"}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx("div",{className:"cursor-pointer p-2 rounded-md bg-amber-500 text-white",children:n.jsx(E,{onClick:()=>w(e)})}),h&&l&&n.jsx("div",{className:"cursor-pointer p-2 rounded-md bg-amber-500 text-white",children:n.jsx(q,{onClick:()=>j(e)})})]})]})]},e.id)})})]})};export{M as PackageManager,M as default}; diff --git a/src/renderer/assistant-center/root/assistant-base-app/assets/index-BQID9xYq.css b/src/renderer/assistant-center/root/assistant-base-app/assets/index-BQID9xYq.css new file mode 100644 index 0000000..db4fbc8 --- /dev/null +++ b/src/renderer/assistant-center/root/assistant-base-app/assets/index-BQID9xYq.css @@ -0,0 +1 @@ +:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;background-color:#fff8e1;color:#213547}body{margin:0;min-width:320px;min-height:100vh}#app{max-width:1280px;margin:0 auto;padding:2rem}h1{text-align:center;color:#ff8f00}.package-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem}.package-card{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 4px #ff8f001a;border:1px solid #ffe0b2}.package-card h2{margin:0 0 .5rem;color:#f57c00}.package-card .description{color:#666;margin-bottom:1rem;font-size:.9rem;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;line-height:1.5;max-height:6em}.package-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;font-size:.9rem;color:#666}.actions{display:flex;gap:.5rem}.button{padding:.5rem 1rem;border-radius:4px;border:none;cursor:pointer;font-weight:500;transition:background-color .2s}.button-install{background-color:#ffa000;color:#fff}.button-update{background-color:#ff8f00;color:#fff}.button-reinstall{background-color:#ffb300;color:#fff}.button-uninstall{background-color:#ff6f00;color:#fff}.button:hover{opacity:.9}.button:disabled{background-color:#ffe0b2;cursor:not-allowed}.error-message{text-align:center;color:#ff6f00;padding:2rem;background:#fff;border-radius:8px;box-shadow:0 2px 4px #ff8f001a;grid-column:1 / -1} diff --git a/src/renderer/assistant-center/root/assistant-base-app/assets/index-CyYNi-ro.css b/src/renderer/assistant-center/root/assistant-base-app/assets/index-CyYNi-ro.css new file mode 100644 index 0000000..90427ab --- /dev/null +++ b/src/renderer/assistant-center/root/assistant-base-app/assets/index-CyYNi-ro.css @@ -0,0 +1 @@ +/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-amber-500:oklch(.769 .188 70.08);--color-gray-300:oklch(.872 .01 258.338);--color-white:#fff;--spacing:.25rem;--radius-md:.375rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(--font-sans--font-variation-settings);--default-mono-font-family:var(--font-mono);--default-mono-font-feature-settings:var(--font-mono--font-feature-settings);--default-mono-font-variation-settings:var(--font-mono--font-variation-settings)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{.test-loading{height:calc(var(--spacing)*20);width:calc(var(--spacing)*20);animation:var(--animate-spin);background-color:var(--color-gray-300);border-radius:3.40282e38px}}@layer utilities{.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-0{top:calc(var(--spacing)*0)}.z-10{z-index:10}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.hidden{display:none}.h-10{height:calc(var(--spacing)*10)}.h-full{height:100%}.w-10{width:calc(var(--spacing)*10)}.w-full{width:100%}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-amber-500{background-color:var(--color-amber-500)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.pt-10{padding-top:calc(var(--spacing)*10)}.text-white{color:var(--color-white)}.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}}html,body{width:100%;height:100%;margin:0;padding:0;overflow:hidden}#root{width:100%;height:100%;overflow:auto}#root::-webkit-scrollbar{width:1px}#root::-webkit-scrollbar-thumb{background-color:#00000080;border-radius:10px}#root::-webkit-scrollbar-track{background:0 0}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/src/renderer/assistant-center/root/assistant-base-app/assets/index-OAiiq-Mf.js b/src/renderer/assistant-center/root/assistant-base-app/assets/index-OAiiq-Mf.js new file mode 100644 index 0000000..2273ab7 --- /dev/null +++ b/src/renderer/assistant-center/root/assistant-base-app/assets/index-OAiiq-Mf.js @@ -0,0 +1,51 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-B3OKg3E6.js","assets/index-BQID9xYq.css","assets/Enter-BnWSbQup.js","assets/Enter-CoE7l2Yc.css"])))=>i.map(i=>d[i]); +(function(){const o=document.createElement("link").relList;if(o&&o.supports&&o.supports("modulepreload"))return;for(const E of document.querySelectorAll('link[rel="modulepreload"]'))r(E);new MutationObserver(E=>{for(const D of E)if(D.type==="childList")for(const A of D.addedNodes)A.tagName==="LINK"&&A.rel==="modulepreload"&&r(A)}).observe(document,{childList:!0,subtree:!0});function v(E){const D={};return E.integrity&&(D.integrity=E.integrity),E.referrerPolicy&&(D.referrerPolicy=E.referrerPolicy),E.crossOrigin==="use-credentials"?D.credentials="include":E.crossOrigin==="anonymous"?D.credentials="omit":D.credentials="same-origin",D}function r(E){if(E.ep)return;E.ep=!0;const D=v(E);fetch(E.href,D)}})();function ky(c){return c&&c.__esModule&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c}var ic={exports:{}},Du={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ad;function $y(){if(ad)return Du;ad=1;var c=Symbol.for("react.transitional.element"),o=Symbol.for("react.fragment");function v(r,E,D){var A=null;if(D!==void 0&&(A=""+D),E.key!==void 0&&(A=""+E.key),"key"in E){D={};for(var H in E)H!=="key"&&(D[H]=E[H])}else D=E;return E=D.ref,{$$typeof:c,type:r,key:A,ref:E!==void 0?E:null,props:D}}return Du.Fragment=o,Du.jsx=v,Du.jsxs=v,Du}var ed;function Wy(){return ed||(ed=1,ic.exports=$y()),ic.exports}var tl=Wy(),fc={exports:{}},Mu={},cc={exports:{}},sc={};/** + * @license React + * scheduler.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ud;function Fy(){return ud||(ud=1,function(c){function o(U,w){var G=U.length;U.push(w);t:for(;0>>1,d=U[pt];if(0>>1;ptE(Z,G))NE(ct,Z)?(U[pt]=ct,U[N]=G,pt=N):(U[pt]=Z,U[K]=G,pt=K);else if(NE(ct,G))U[pt]=ct,U[N]=G,pt=N;else break t}}return w}function E(U,w){var G=U.sortIndex-w.sortIndex;return G!==0?G:U.id-w.id}if(c.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var D=performance;c.unstable_now=function(){return D.now()}}else{var A=Date,H=A.now();c.unstable_now=function(){return A.now()-H}}var T=[],b=[],R=1,C=null,Q=3,J=!1,dt=!1,et=!1,W=typeof setTimeout=="function"?setTimeout:null,P=typeof clearTimeout=="function"?clearTimeout:null,x=typeof setImmediate<"u"?setImmediate:null;function X(U){for(var w=v(b);w!==null;){if(w.callback===null)r(b);else if(w.startTime<=U)r(b),w.sortIndex=w.expirationTime,o(T,w);else break;w=v(b)}}function $(U){if(et=!1,X(U),!dt)if(v(T)!==null)dt=!0,zl();else{var w=v(b);w!==null&&Zt($,w.startTime-U)}}var L=!1,vt=-1,tt=5,it=-1;function B(){return!(c.unstable_now()-itU&&B());){var pt=C.callback;if(typeof pt=="function"){C.callback=null,Q=C.priorityLevel;var d=pt(C.expirationTime<=U);if(U=c.unstable_now(),typeof d=="function"){C.callback=d,X(U),w=!0;break l}C===v(T)&&r(T),X(U)}else r(T);C=v(T)}if(C!==null)w=!0;else{var M=v(b);M!==null&&Zt($,M.startTime-U),w=!1}}break t}finally{C=null,Q=G,J=!1}w=void 0}}finally{w?Dt():L=!1}}}var Dt;if(typeof x=="function")Dt=function(){x(I)};else if(typeof MessageChannel<"u"){var Lt=new MessageChannel,Wt=Lt.port2;Lt.port1.onmessage=I,Dt=function(){Wt.postMessage(null)}}else Dt=function(){W(I,0)};function zl(){L||(L=!0,Dt())}function Zt(U,w){vt=W(function(){U(c.unstable_now())},w)}c.unstable_IdlePriority=5,c.unstable_ImmediatePriority=1,c.unstable_LowPriority=4,c.unstable_NormalPriority=3,c.unstable_Profiling=null,c.unstable_UserBlockingPriority=2,c.unstable_cancelCallback=function(U){U.callback=null},c.unstable_continueExecution=function(){dt||J||(dt=!0,zl())},c.unstable_forceFrameRate=function(U){0>U||125pt?(U.sortIndex=G,o(b,U),v(T)===null&&U===v(b)&&(et?(P(vt),vt=-1):et=!0,Zt($,G-pt))):(U.sortIndex=d,o(T,U),dt||J||(dt=!0,zl())),U},c.unstable_shouldYield=B,c.unstable_wrapCallback=function(U){var w=Q;return function(){var G=Q;Q=w;try{return U.apply(this,arguments)}finally{Q=G}}}}(sc)),sc}var nd;function Iy(){return nd||(nd=1,cc.exports=Fy()),cc.exports}var oc={exports:{}},F={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var id;function Py(){if(id)return F;id=1;var c=Symbol.for("react.transitional.element"),o=Symbol.for("react.portal"),v=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),E=Symbol.for("react.profiler"),D=Symbol.for("react.consumer"),A=Symbol.for("react.context"),H=Symbol.for("react.forward_ref"),T=Symbol.for("react.suspense"),b=Symbol.for("react.memo"),R=Symbol.for("react.lazy"),C=Symbol.iterator;function Q(d){return d===null||typeof d!="object"?null:(d=C&&d[C]||d["@@iterator"],typeof d=="function"?d:null)}var J={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},dt=Object.assign,et={};function W(d,M,K){this.props=d,this.context=M,this.refs=et,this.updater=K||J}W.prototype.isReactComponent={},W.prototype.setState=function(d,M){if(typeof d!="object"&&typeof d!="function"&&d!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,d,M,"setState")},W.prototype.forceUpdate=function(d){this.updater.enqueueForceUpdate(this,d,"forceUpdate")};function P(){}P.prototype=W.prototype;function x(d,M,K){this.props=d,this.context=M,this.refs=et,this.updater=K||J}var X=x.prototype=new P;X.constructor=x,dt(X,W.prototype),X.isPureReactComponent=!0;var $=Array.isArray,L={H:null,A:null,T:null,S:null},vt=Object.prototype.hasOwnProperty;function tt(d,M,K,Z,N,ct){return K=ct.ref,{$$typeof:c,type:d,key:M,ref:K!==void 0?K:null,props:ct}}function it(d,M){return tt(d.type,M,void 0,void 0,void 0,d.props)}function B(d){return typeof d=="object"&&d!==null&&d.$$typeof===c}function I(d){var M={"=":"=0",":":"=2"};return"$"+d.replace(/[=:]/g,function(K){return M[K]})}var Dt=/\/+/g;function Lt(d,M){return typeof d=="object"&&d!==null&&d.key!=null?I(""+d.key):M.toString(36)}function Wt(){}function zl(d){switch(d.status){case"fulfilled":return d.value;case"rejected":throw d.reason;default:switch(typeof d.status=="string"?d.then(Wt,Wt):(d.status="pending",d.then(function(M){d.status==="pending"&&(d.status="fulfilled",d.value=M)},function(M){d.status==="pending"&&(d.status="rejected",d.reason=M)})),d.status){case"fulfilled":return d.value;case"rejected":throw d.reason}}throw d}function Zt(d,M,K,Z,N){var ct=typeof d;(ct==="undefined"||ct==="boolean")&&(d=null);var lt=!1;if(d===null)lt=!0;else switch(ct){case"bigint":case"string":case"number":lt=!0;break;case"object":switch(d.$$typeof){case c:case o:lt=!0;break;case R:return lt=d._init,Zt(lt(d._payload),M,K,Z,N)}}if(lt)return N=N(d),lt=Z===""?"."+Lt(d,0):Z,$(N)?(K="",lt!=null&&(K=lt.replace(Dt,"$&/")+"/"),Zt(N,M,K,"",function(Nt){return Nt})):N!=null&&(B(N)&&(N=it(N,K+(N.key==null||d&&d.key===N.key?"":(""+N.key).replace(Dt,"$&/")+"/")+lt)),M.push(N)),1;lt=0;var Ft=Z===""?".":Z+":";if($(d))for(var mt=0;mt"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(c)}catch(o){console.error(o)}}return c(),rc.exports=tm(),rc.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var od;function am(){if(od)return Mu;od=1;var c=Iy(),o=gc(),v=lm();function r(t){var l="https://react.dev/errors/"+t;if(1)":-1u||s[e]!==m[u]){var S=` +`+s[e].replace(" at new "," at ");return t.displayName&&S.includes("")&&(S=S.replace("",t.displayName)),S}while(1<=e&&0<=u);break}}}finally{zl=!1,Error.prepareStackTrace=a}return(a=t?t.displayName||t.name:"")?Wt(a):""}function U(t){switch(t.tag){case 26:case 27:case 5:return Wt(t.type);case 16:return Wt("Lazy");case 13:return Wt("Suspense");case 19:return Wt("SuspenseList");case 0:case 15:return t=Zt(t.type,!1),t;case 11:return t=Zt(t.type.render,!1),t;case 1:return t=Zt(t.type,!0),t;default:return""}}function w(t){try{var l="";do l+=U(t),t=t.return;while(t);return l}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}function G(t){var l=t,a=t;if(t.alternate)for(;l.return;)l=l.return;else{t=l;do l=t,(l.flags&4098)!==0&&(a=l.return),t=l.return;while(t)}return l.tag===3?a:null}function pt(t){if(t.tag===13){var l=t.memoizedState;if(l===null&&(t=t.alternate,t!==null&&(l=t.memoizedState)),l!==null)return l.dehydrated}return null}function d(t){if(G(t)!==t)throw Error(r(188))}function M(t){var l=t.alternate;if(!l){if(l=G(t),l===null)throw Error(r(188));return l!==t?null:t}for(var a=t,e=l;;){var u=a.return;if(u===null)break;var n=u.alternate;if(n===null){if(e=u.return,e!==null){a=e;continue}break}if(u.child===n.child){for(n=u.child;n;){if(n===a)return d(u),t;if(n===e)return d(u),l;n=n.sibling}throw Error(r(188))}if(a.return!==e.return)a=u,e=n;else{for(var i=!1,f=u.child;f;){if(f===a){i=!0,a=u,e=n;break}if(f===e){i=!0,e=u,a=n;break}f=f.sibling}if(!i){for(f=n.child;f;){if(f===a){i=!0,a=n,e=u;break}if(f===e){i=!0,e=n,a=u;break}f=f.sibling}if(!i)throw Error(r(189))}}if(a.alternate!==e)throw Error(r(190))}if(a.tag!==3)throw Error(r(188));return a.stateNode.current===a?t:l}function K(t){var l=t.tag;if(l===5||l===26||l===27||l===6)return t;for(t=t.child;t!==null;){if(l=K(t),l!==null)return l;t=t.sibling}return null}var Z=Array.isArray,N=v.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ct={pending:!1,data:null,method:null,action:null},lt=[],Ft=-1;function mt(t){return{current:t}}function Nt(t){0>Ft||(t.current=lt[Ft],lt[Ft]=null,Ft--)}function zt(t,l){Ft++,lt[Ft]=t.current,t.current=l}var Rl=mt(null),Ue=mt(null),ta=mt(null),Nu=mt(null);function xu(t,l){switch(zt(ta,l),zt(Ue,t),zt(Rl,null),t=l.nodeType,t){case 9:case 11:l=(l=l.documentElement)&&(l=l.namespaceURI)?Hr(l):0;break;default:if(t=t===8?l.parentNode:l,l=t.tagName,t=t.namespaceURI)t=Hr(t),l=Nr(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}Nt(Rl),zt(Rl,l)}function ka(){Nt(Rl),Nt(Ue),Nt(ta)}function Wn(t){t.memoizedState!==null&&zt(Nu,t);var l=Rl.current,a=Nr(l,t.type);l!==a&&(zt(Ue,t),zt(Rl,a))}function qu(t){Ue.current===t&&(Nt(Rl),Nt(Ue)),Nu.current===t&&(Nt(Nu),Tu._currentValue=ct)}var Fn=Object.prototype.hasOwnProperty,In=c.unstable_scheduleCallback,Pn=c.unstable_cancelCallback,Od=c.unstable_shouldYield,Dd=c.unstable_requestPaint,Ul=c.unstable_now,Md=c.unstable_getCurrentPriorityLevel,_c=c.unstable_ImmediatePriority,pc=c.unstable_UserBlockingPriority,Cu=c.unstable_NormalPriority,Rd=c.unstable_LowPriority,Sc=c.unstable_IdlePriority,Ud=c.log,Hd=c.unstable_setDisableYieldValue,He=null,nl=null;function Nd(t){if(nl&&typeof nl.onCommitFiberRoot=="function")try{nl.onCommitFiberRoot(He,t,void 0,(t.current.flags&128)===128)}catch{}}function la(t){if(typeof Ud=="function"&&Hd(t),nl&&typeof nl.setStrictMode=="function")try{nl.setStrictMode(He,t)}catch{}}var il=Math.clz32?Math.clz32:Cd,xd=Math.log,qd=Math.LN2;function Cd(t){return t>>>=0,t===0?32:31-(xd(t)/qd|0)|0}var Bu=128,Yu=4194304;function za(t){var l=t&42;if(l!==0)return l;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Xu(t,l){var a=t.pendingLanes;if(a===0)return 0;var e=0,u=t.suspendedLanes,n=t.pingedLanes,i=t.warmLanes;t=t.finishedLanes!==0;var f=a&134217727;return f!==0?(a=f&~u,a!==0?e=za(a):(n&=f,n!==0?e=za(n):t||(i=f&~i,i!==0&&(e=za(i))))):(f=a&~u,f!==0?e=za(f):n!==0?e=za(n):t||(i=a&~i,i!==0&&(e=za(i)))),e===0?0:l!==0&&l!==e&&(l&u)===0&&(u=e&-e,i=l&-l,u>=i||u===32&&(i&4194176)!==0)?l:e}function Ne(t,l){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&l)===0}function Bd(t,l){switch(t){case 1:case 2:case 4:case 8:return l+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Tc(){var t=Bu;return Bu<<=1,(Bu&4194176)===0&&(Bu=128),t}function Ec(){var t=Yu;return Yu<<=1,(Yu&62914560)===0&&(Yu=4194304),t}function ti(t){for(var l=[],a=0;31>a;a++)l.push(t);return l}function xe(t,l){t.pendingLanes|=l,l!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Yd(t,l,a,e,u,n){var i=t.pendingLanes;t.pendingLanes=a,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=a,t.entangledLanes&=a,t.errorRecoveryDisabledLanes&=a,t.shellSuspendCounter=0;var f=t.entanglements,s=t.expirationTimes,m=t.hiddenUpdates;for(a=i&~a;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Qd=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Hc={},Nc={};function Ld(t){return Fn.call(Nc,t)?!0:Fn.call(Hc,t)?!1:Qd.test(t)?Nc[t]=!0:(Hc[t]=!0,!1)}function ju(t,l,a){if(Ld(l))if(a===null)t.removeAttribute(l);else{switch(typeof a){case"undefined":case"function":case"symbol":t.removeAttribute(l);return;case"boolean":var e=l.toLowerCase().slice(0,5);if(e!=="data-"&&e!=="aria-"){t.removeAttribute(l);return}}t.setAttribute(l,""+a)}}function Gu(t,l,a){if(a===null)t.removeAttribute(l);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(l);return}t.setAttribute(l,""+a)}}function Yl(t,l,a,e){if(e===null)t.removeAttribute(a);else{switch(typeof e){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(a);return}t.setAttributeNS(l,a,""+e)}}function dl(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function xc(t){var l=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(l==="checkbox"||l==="radio")}function Zd(t){var l=xc(t)?"checked":"value",a=Object.getOwnPropertyDescriptor(t.constructor.prototype,l),e=""+t[l];if(!t.hasOwnProperty(l)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var u=a.get,n=a.set;return Object.defineProperty(t,l,{configurable:!0,get:function(){return u.call(this)},set:function(i){e=""+i,n.call(this,i)}}),Object.defineProperty(t,l,{enumerable:a.enumerable}),{getValue:function(){return e},setValue:function(i){e=""+i},stopTracking:function(){t._valueTracker=null,delete t[l]}}}}function Qu(t){t._valueTracker||(t._valueTracker=Zd(t))}function qc(t){if(!t)return!1;var l=t._valueTracker;if(!l)return!0;var a=l.getValue(),e="";return t&&(e=xc(t)?t.checked?"true":"false":t.value),t=e,t!==a?(l.setValue(t),!0):!1}function Lu(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Vd=/[\n"\\]/g;function yl(t){return t.replace(Vd,function(l){return"\\"+l.charCodeAt(0).toString(16)+" "})}function ei(t,l,a,e,u,n,i,f){t.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?t.type=i:t.removeAttribute("type"),l!=null?i==="number"?(l===0&&t.value===""||t.value!=l)&&(t.value=""+dl(l)):t.value!==""+dl(l)&&(t.value=""+dl(l)):i!=="submit"&&i!=="reset"||t.removeAttribute("value"),l!=null?ui(t,i,dl(l)):a!=null?ui(t,i,dl(a)):e!=null&&t.removeAttribute("value"),u==null&&n!=null&&(t.defaultChecked=!!n),u!=null&&(t.checked=u&&typeof u!="function"&&typeof u!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?t.name=""+dl(f):t.removeAttribute("name")}function Cc(t,l,a,e,u,n,i,f){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(t.type=n),l!=null||a!=null){if(!(n!=="submit"&&n!=="reset"||l!=null))return;a=a!=null?""+dl(a):"",l=l!=null?""+dl(l):a,f||l===t.value||(t.value=l),t.defaultValue=l}e=e??u,e=typeof e!="function"&&typeof e!="symbol"&&!!e,t.checked=f?t.checked:!!e,t.defaultChecked=!!e,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(t.name=i)}function ui(t,l,a){l==="number"&&Lu(t.ownerDocument)===t||t.defaultValue===""+a||(t.defaultValue=""+a)}function Pa(t,l,a,e){if(t=t.options,l){l={};for(var u=0;u=Ge),kc=" ",$c=!1;function Wc(t,l){switch(t){case"keyup":return b0.indexOf(l.keyCode)!==-1;case"keydown":return l.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fc(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var ee=!1;function p0(t,l){switch(t){case"compositionend":return Fc(l);case"keypress":return l.which!==32?null:($c=!0,kc);case"textInput":return t=l.data,t===kc&&$c?null:t;default:return null}}function S0(t,l){if(ee)return t==="compositionend"||!vi&&Wc(t,l)?(t=Lc(),Vu=oi=ea=null,ee=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(l.ctrlKey||l.altKey||l.metaKey)||l.ctrlKey&&l.altKey){if(l.char&&1=l)return{node:a,offset:l-t};t=e}t:{for(;a;){if(a.nextSibling){a=a.nextSibling;break t}a=a.parentNode}a=void 0}a=ns(a)}}function fs(t,l){return t&&l?t===l?!0:t&&t.nodeType===3?!1:l&&l.nodeType===3?fs(t,l.parentNode):"contains"in t?t.contains(l):t.compareDocumentPosition?!!(t.compareDocumentPosition(l)&16):!1:!1}function cs(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var l=Lu(t.document);l instanceof t.HTMLIFrameElement;){try{var a=typeof l.contentWindow.location.href=="string"}catch{a=!1}if(a)t=l.contentWindow;else break;l=Lu(t.document)}return l}function bi(t){var l=t&&t.nodeName&&t.nodeName.toLowerCase();return l&&(l==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||l==="textarea"||t.contentEditable==="true")}function R0(t,l){var a=cs(l);l=t.focusedElem;var e=t.selectionRange;if(a!==l&&l&&l.ownerDocument&&fs(l.ownerDocument.documentElement,l)){if(e!==null&&bi(l)){if(t=e.start,a=e.end,a===void 0&&(a=t),"selectionStart"in l)l.selectionStart=t,l.selectionEnd=Math.min(a,l.value.length);else if(a=(t=l.ownerDocument||document)&&t.defaultView||window,a.getSelection){a=a.getSelection();var u=l.textContent.length,n=Math.min(e.start,u);e=e.end===void 0?n:Math.min(e.end,u),!a.extend&&n>e&&(u=e,e=n,n=u),u=is(l,n);var i=is(l,e);u&&i&&(a.rangeCount!==1||a.anchorNode!==u.node||a.anchorOffset!==u.offset||a.focusNode!==i.node||a.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(u.node,u.offset),a.removeAllRanges(),n>e?(a.addRange(t),a.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),a.addRange(t)))}}for(t=[],a=l;a=a.parentNode;)a.nodeType===1&&t.push({element:a,left:a.scrollLeft,top:a.scrollTop});for(typeof l.focus=="function"&&l.focus(),l=0;l=document.documentMode,ue=null,_i=null,Ve=null,pi=!1;function ss(t,l,a){var e=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;pi||ue==null||ue!==Lu(e)||(e=ue,"selectionStart"in e&&bi(e)?e={start:e.selectionStart,end:e.selectionEnd}:(e=(e.ownerDocument&&e.ownerDocument.defaultView||window).getSelection(),e={anchorNode:e.anchorNode,anchorOffset:e.anchorOffset,focusNode:e.focusNode,focusOffset:e.focusOffset}),Ve&&Ze(Ve,e)||(Ve=e,e=Nn(_i,"onSelect"),0>=i,u-=i,Xl=1<<32-il(l)+u|a<V?(Qt=j,j=null):Qt=j.sibling;var rt=_(h,j,g[V],z);if(rt===null){j===null&&(j=Qt);break}t&&j&&rt.alternate===null&&l(h,j),y=n(rt,y,V),ut===null?q=rt:ut.sibling=rt,ut=rt,j=Qt}if(V===g.length)return a(h,j),ot&&Ha(h,V),q;if(j===null){for(;VV?(Qt=j,j=null):Qt=j.sibling;var Ea=_(h,j,rt.value,z);if(Ea===null){j===null&&(j=Qt);break}t&&j&&Ea.alternate===null&&l(h,j),y=n(Ea,y,V),ut===null?q=Ea:ut.sibling=Ea,ut=Ea,j=Qt}if(rt.done)return a(h,j),ot&&Ha(h,V),q;if(j===null){for(;!rt.done;V++,rt=g.next())rt=O(h,rt.value,z),rt!==null&&(y=n(rt,y,V),ut===null?q=rt:ut.sibling=rt,ut=rt);return ot&&Ha(h,V),q}for(j=e(j);!rt.done;V++,rt=g.next())rt=p(j,h,V,rt.value,z),rt!==null&&(t&&rt.alternate!==null&&j.delete(rt.key===null?V:rt.key),y=n(rt,y,V),ut===null?q=rt:ut.sibling=rt,ut=rt);return t&&j.forEach(function(Jy){return l(h,Jy)}),ot&&Ha(h,V),q}function Ut(h,y,g,z){if(typeof g=="object"&&g!==null&&g.type===T&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case A:t:{for(var q=g.key;y!==null;){if(y.key===q){if(q=g.type,q===T){if(y.tag===7){a(h,y.sibling),z=u(y,g.props.children),z.return=h,h=z;break t}}else if(y.elementType===q||typeof q=="object"&&q!==null&&q.$$typeof===x&&Os(q)===y.type){a(h,y.sibling),z=u(y,g.props),Fe(z,g),z.return=h,h=z;break t}a(h,y);break}else l(h,y);y=y.sibling}g.type===T?(z=La(g.props.children,h.mode,z,g.key),z.return=h,h=z):(z=Tn(g.type,g.key,g.props,null,h.mode,z),Fe(z,g),z.return=h,h=z)}return i(h);case H:t:{for(q=g.key;y!==null;){if(y.key===q)if(y.tag===4&&y.stateNode.containerInfo===g.containerInfo&&y.stateNode.implementation===g.implementation){a(h,y.sibling),z=u(y,g.children||[]),z.return=h,h=z;break t}else{a(h,y);break}else l(h,y);y=y.sibling}z=Ef(g,h.mode,z),z.return=h,h=z}return i(h);case x:return q=g._init,g=q(g._payload),Ut(h,y,g,z)}if(Z(g))return Y(h,y,g,z);if(vt(g)){if(q=vt(g),typeof q!="function")throw Error(r(150));return g=q.call(g),k(h,y,g,z)}if(typeof g.then=="function")return Ut(h,y,an(g),z);if(g.$$typeof===J)return Ut(h,y,_n(h,g),z);en(h,g)}return typeof g=="string"&&g!==""||typeof g=="number"||typeof g=="bigint"?(g=""+g,y!==null&&y.tag===6?(a(h,y.sibling),z=u(y,g),z.return=h,h=z):(a(h,y),z=Tf(g,h.mode,z),z.return=h,h=z),i(h)):a(h,y)}return function(h,y,g,z){try{We=0;var q=Ut(h,y,g,z);return oe=null,q}catch(j){if(j===ke)throw j;var ut=Sl(29,j,null,h.mode);return ut.lanes=z,ut.return=h,ut}finally{}}}var xa=Ds(!0),Ms=Ds(!1),re=mt(null),un=mt(0);function Rs(t,l){t=Wl,zt(un,t),zt(re,l),Wl=t|l.baseLanes}function Mi(){zt(un,Wl),zt(re,re.current)}function Ri(){Wl=un.current,Nt(re),Nt(un)}var bl=mt(null),Nl=null;function na(t){var l=t.alternate;zt(Bt,Bt.current&1),zt(bl,t),Nl===null&&(l===null||re.current!==null||l.memoizedState!==null)&&(Nl=t)}function Us(t){if(t.tag===22){if(zt(Bt,Bt.current),zt(bl,t),Nl===null){var l=t.alternate;l!==null&&l.memoizedState!==null&&(Nl=t)}}else ia()}function ia(){zt(Bt,Bt.current),zt(bl,bl.current)}function Gl(t){Nt(bl),Nl===t&&(Nl=null),Nt(Bt)}var Bt=mt(0);function nn(t){for(var l=t;l!==null;){if(l.tag===13){var a=l.memoizedState;if(a!==null&&(a=a.dehydrated,a===null||a.data==="$?"||a.data==="$!"))return l}else if(l.tag===19&&l.memoizedProps.revealOrder!==void 0){if((l.flags&128)!==0)return l}else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===t)break;for(;l.sibling===null;){if(l.return===null||l.return===t)return null;l=l.return}l.sibling.return=l.return,l=l.sibling}return null}var q0=typeof AbortController<"u"?AbortController:function(){var t=[],l=this.signal={aborted:!1,addEventListener:function(a,e){t.push(e)}};this.abort=function(){l.aborted=!0,t.forEach(function(a){return a()})}},C0=c.unstable_scheduleCallback,B0=c.unstable_NormalPriority,Yt={$$typeof:J,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Ui(){return{controller:new q0,data:new Map,refCount:0}}function Ie(t){t.refCount--,t.refCount===0&&C0(B0,function(){t.controller.abort()})}var Pe=null,Hi=0,de=0,ye=null;function Y0(t,l){if(Pe===null){var a=Pe=[];Hi=0,de=Xf(),ye={status:"pending",value:void 0,then:function(e){a.push(e)}}}return Hi++,l.then(Hs,Hs),l}function Hs(){if(--Hi===0&&Pe!==null){ye!==null&&(ye.status="fulfilled");var t=Pe;Pe=null,de=0,ye=null;for(var l=0;ln?n:8;var i=B.T,f={};B.T=f,ki(t,!1,l,a);try{var s=u(),m=B.S;if(m!==null&&m(f,s),s!==null&&typeof s=="object"&&typeof s.then=="function"){var S=X0(s,e);au(t,l,S,rl(t))}else au(t,l,e,rl(t))}catch(O){au(t,l,{then:function(){},status:"rejected",reason:O},rl())}finally{N.p=n,B.T=i}}function Z0(){}function wi(t,l,a,e){if(t.tag!==5)throw Error(r(476));var u=co(t).queue;fo(t,u,l,ct,a===null?Z0:function(){return so(t),a(e)})}function co(t){var l=t.memoizedState;if(l!==null)return l;l={memoizedState:ct,baseState:ct,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ql,lastRenderedState:ct},next:null};var a={};return l.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ql,lastRenderedState:a},next:null},t.memoizedState=l,t=t.alternate,t!==null&&(t.memoizedState=l),l}function so(t){var l=co(t).next.queue;au(t,l,{},rl())}function Ji(){return kt(Tu)}function oo(){return qt().memoizedState}function ro(){return qt().memoizedState}function V0(t){for(var l=t.return;l!==null;){switch(l.tag){case 24:case 3:var a=rl();t=ra(a);var e=da(l,t,a);e!==null&&(Pt(e,l,a),nu(e,l,a)),l={cache:Ui()},t.payload=l;return}l=l.return}}function K0(t,l,a){var e=rl();a={lane:e,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null},vn(t)?mo(l,a):(a=Ei(t,l,a,e),a!==null&&(Pt(a,t,e),vo(a,l,e)))}function yo(t,l,a){var e=rl();au(t,l,a,e)}function au(t,l,a,e){var u={lane:e,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null};if(vn(t))mo(l,u);else{var n=t.alternate;if(t.lanes===0&&(n===null||n.lanes===0)&&(n=l.lastRenderedReducer,n!==null))try{var i=l.lastRenderedState,f=n(i,a);if(u.hasEagerState=!0,u.eagerState=f,fl(f,i))return Fu(t,l,u,0),St===null&&Wu(),!1}catch{}finally{}if(a=Ei(t,l,u,e),a!==null)return Pt(a,t,e),vo(a,l,e),!0}return!1}function ki(t,l,a,e){if(e={lane:2,revertLane:Xf(),action:e,hasEagerState:!1,eagerState:null,next:null},vn(t)){if(l)throw Error(r(479))}else l=Ei(t,a,e,2),l!==null&&Pt(l,t,2)}function vn(t){var l=t.alternate;return t===at||l!==null&&l===at}function mo(t,l){me=cn=!0;var a=t.pending;a===null?l.next=l:(l.next=a.next,a.next=l),t.pending=l}function vo(t,l,a){if((a&4194176)!==0){var e=l.lanes;e&=t.pendingLanes,a|=e,l.lanes=a,Ac(t,a)}}var xl={readContext:kt,use:rn,useCallback:Ht,useContext:Ht,useEffect:Ht,useImperativeHandle:Ht,useLayoutEffect:Ht,useInsertionEffect:Ht,useMemo:Ht,useReducer:Ht,useRef:Ht,useState:Ht,useDebugValue:Ht,useDeferredValue:Ht,useTransition:Ht,useSyncExternalStore:Ht,useId:Ht};xl.useCacheRefresh=Ht,xl.useMemoCache=Ht,xl.useHostTransitionStatus=Ht,xl.useFormState=Ht,xl.useActionState=Ht,xl.useOptimistic=Ht;var Ba={readContext:kt,use:rn,useCallback:function(t,l){return ul().memoizedState=[t,l===void 0?null:l],t},useContext:kt,useEffect:Ps,useImperativeHandle:function(t,l,a){a=a!=null?a.concat([t]):null,yn(4194308,4,ao.bind(null,l,t),a)},useLayoutEffect:function(t,l){return yn(4194308,4,t,l)},useInsertionEffect:function(t,l){yn(4,2,t,l)},useMemo:function(t,l){var a=ul();l=l===void 0?null:l;var e=t();if(Ca){la(!0);try{t()}finally{la(!1)}}return a.memoizedState=[e,l],e},useReducer:function(t,l,a){var e=ul();if(a!==void 0){var u=a(l);if(Ca){la(!0);try{a(l)}finally{la(!1)}}}else u=l;return e.memoizedState=e.baseState=u,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:u},e.queue=t,t=t.dispatch=K0.bind(null,at,t),[e.memoizedState,t]},useRef:function(t){var l=ul();return t={current:t},l.memoizedState=t},useState:function(t){t=Qi(t);var l=t.queue,a=yo.bind(null,at,l);return l.dispatch=a,[t.memoizedState,a]},useDebugValue:Vi,useDeferredValue:function(t,l){var a=ul();return Ki(a,t,l)},useTransition:function(){var t=Qi(!1);return t=fo.bind(null,at,t.queue,!0,!1),ul().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,l,a){var e=at,u=ul();if(ot){if(a===void 0)throw Error(r(407));a=a()}else{if(a=l(),St===null)throw Error(r(349));(st&60)!==0||Ys(e,l,a)}u.memoizedState=a;var n={value:a,getSnapshot:l};return u.queue=n,Ps(js.bind(null,e,n,t),[t]),e.flags|=2048,he(9,Xs.bind(null,e,n,a,l),{destroy:void 0},null),a},useId:function(){var t=ul(),l=St.identifierPrefix;if(ot){var a=jl,e=Xl;a=(e&~(1<<32-il(e)-1)).toString(32)+a,l=":"+l+"R"+a,a=sn++,0 title"))),wt(n,e,a),n[Jt]=t,Xt(n),e=n;break t;case"link":var i=Lr("link","href",u).get(e+(a.href||""));if(i){for(var f=0;f<\/script>",t=t.removeChild(t.firstChild);break;case"select":t=typeof e.is=="string"?u.createElement("select",{is:e.is}):u.createElement("select"),e.multiple?t.multiple=!0:e.size&&(t.size=e.size);break;default:t=typeof e.is=="string"?u.createElement(a,{is:e.is}):u.createElement(a)}}t[Jt]=l,t[al]=e;t:for(u=l.child;u!==null;){if(u.tag===5||u.tag===6)t.appendChild(u.stateNode);else if(u.tag!==4&&u.tag!==27&&u.child!==null){u.child.return=u,u=u.child;continue}if(u===l)break t;for(;u.sibling===null;){if(u.return===null||u.return===l)break t;u=u.return}u.sibling.return=u.return,u=u.sibling}l.stateNode=t;t:switch(wt(t,a,e),a){case"button":case"input":case"select":case"textarea":t=!!e.autoFocus;break t;case"img":t=!0;break t;default:t=!1}t&&kl(l)}}return At(l),l.flags&=-16777217,null;case 6:if(t&&l.stateNode!=null)t.memoizedProps!==e&&kl(l);else{if(typeof e!="string"&&l.stateNode===null)throw Error(r(166));if(t=ta.current,Ke(l)){if(t=l.stateNode,a=l.memoizedProps,e=null,u=It,u!==null)switch(u.tag){case 27:case 5:e=u.memoizedProps}t[Jt]=l,t=!!(t.nodeValue===a||e!==null&&e.suppressHydrationWarning===!0||Ur(t.nodeValue,a)),t||Na(l)}else t=qn(t).createTextNode(e),t[Jt]=l,l.stateNode=t}return At(l),null;case 13:if(e=l.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(u=Ke(l),e!==null&&e.dehydrated!==null){if(t===null){if(!u)throw Error(r(318));if(u=l.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(317));u[Jt]=l}else we(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;At(l),u=!1}else Ol!==null&&(Hf(Ol),Ol=null),u=!0;if(!u)return l.flags&256?(Gl(l),l):(Gl(l),null)}if(Gl(l),(l.flags&128)!==0)return l.lanes=a,l;if(a=e!==null,t=t!==null&&t.memoizedState!==null,a){e=l.child,u=null,e.alternate!==null&&e.alternate.memoizedState!==null&&e.alternate.memoizedState.cachePool!==null&&(u=e.alternate.memoizedState.cachePool.pool);var n=null;e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),n!==u&&(e.flags|=2048)}return a!==t&&a&&(l.child.flags|=8192),En(l,l.updateQueue),At(l),null;case 4:return ka(),t===null&&Lf(l.stateNode.containerInfo),At(l),null;case 10:return Vl(l.type),At(l),null;case 19:if(Nt(Bt),u=l.memoizedState,u===null)return At(l),null;if(e=(l.flags&128)!==0,n=u.rendering,n===null)if(e)du(u,!1);else{if(Rt!==0||t!==null&&(t.flags&128)!==0)for(t=l.child;t!==null;){if(n=nn(t),n!==null){for(l.flags|=128,du(u,!1),t=n.updateQueue,l.updateQueue=t,En(l,t),l.subtreeFlags=0,t=a,a=l.child;a!==null;)ur(a,t),a=a.sibling;return zt(Bt,Bt.current&1|2),l.child}t=t.sibling}u.tail!==null&&Ul()>zn&&(l.flags|=128,e=!0,du(u,!1),l.lanes=4194304)}else{if(!e)if(t=nn(n),t!==null){if(l.flags|=128,e=!0,t=t.updateQueue,l.updateQueue=t,En(l,t),du(u,!0),u.tail===null&&u.tailMode==="hidden"&&!n.alternate&&!ot)return At(l),null}else 2*Ul()-u.renderingStartTime>zn&&a!==536870912&&(l.flags|=128,e=!0,du(u,!1),l.lanes=4194304);u.isBackwards?(n.sibling=l.child,l.child=n):(t=u.last,t!==null?t.sibling=n:l.child=n,u.last=n)}return u.tail!==null?(l=u.tail,u.rendering=l,u.tail=l.sibling,u.renderingStartTime=Ul(),l.sibling=null,t=Bt.current,zt(Bt,e?t&1|2:t&1),l):(At(l),null);case 22:case 23:return Gl(l),Ri(),e=l.memoizedState!==null,t!==null?t.memoizedState!==null!==e&&(l.flags|=8192):e&&(l.flags|=8192),e?(a&536870912)!==0&&(l.flags&128)===0&&(At(l),l.subtreeFlags&6&&(l.flags|=8192)):At(l),a=l.updateQueue,a!==null&&En(l,a.retryQueue),a=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),e=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(e=l.memoizedState.cachePool.pool),e!==a&&(l.flags|=2048),t!==null&&Nt(qa),null;case 24:return a=null,t!==null&&(a=t.memoizedState.cache),l.memoizedState.cache!==a&&(l.flags|=2048),Vl(Yt),At(l),null;case 25:return null}throw Error(r(156,l.tag))}function I0(t,l){switch(Ai(l),l.tag){case 1:return t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 3:return Vl(Yt),ka(),t=l.flags,(t&65536)!==0&&(t&128)===0?(l.flags=t&-65537|128,l):null;case 26:case 27:case 5:return qu(l),null;case 13:if(Gl(l),t=l.memoizedState,t!==null&&t.dehydrated!==null){if(l.alternate===null)throw Error(r(340));we()}return t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 19:return Nt(Bt),null;case 4:return ka(),null;case 10:return Vl(l.type),null;case 22:case 23:return Gl(l),Ri(),t!==null&&Nt(qa),t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 24:return Vl(Yt),null;case 25:return null;default:return null}}function fr(t,l){switch(Ai(l),l.tag){case 3:Vl(Yt),ka();break;case 26:case 27:case 5:qu(l);break;case 4:ka();break;case 13:Gl(l);break;case 19:Nt(Bt);break;case 10:Vl(l.type);break;case 22:case 23:Gl(l),Ri(),t!==null&&Nt(qa);break;case 24:Vl(Yt)}}var P0={getCacheForType:function(t){var l=kt(Yt),a=l.data.get(t);return a===void 0&&(a=t(),l.data.set(t,a)),a}},ty=typeof WeakMap=="function"?WeakMap:Map,Ot=0,St=null,nt=null,st=0,Tt=0,ol=null,$l=!1,pe=!1,zf=!1,Wl=0,Rt=0,ga=0,Za=0,Af=0,Tl=0,Se=0,yu=null,ql=null,Of=!1,Df=0,zn=1/0,An=null,ba=null,On=!1,Va=null,mu=0,Mf=0,Rf=null,vu=0,Uf=null;function rl(){if((Ot&2)!==0&&st!==0)return st&-st;if(B.T!==null){var t=de;return t!==0?t:Xf()}return Dc()}function cr(){Tl===0&&(Tl=(st&536870912)===0||ot?Tc():536870912);var t=bl.current;return t!==null&&(t.flags|=32),Tl}function Pt(t,l,a){(t===St&&Tt===2||t.cancelPendingCommit!==null)&&(Te(t,0),Fl(t,st,Tl,!1)),xe(t,a),((Ot&2)===0||t!==St)&&(t===St&&((Ot&2)===0&&(Za|=a),Rt===4&&Fl(t,st,Tl,!1)),Cl(t))}function sr(t,l,a){if((Ot&6)!==0)throw Error(r(327));var e=!a&&(l&60)===0&&(l&t.expiredLanes)===0||Ne(t,l),u=e?ey(t,l):qf(t,l,!0),n=e;do{if(u===0){pe&&!e&&Fl(t,l,0,!1);break}else if(u===6)Fl(t,l,0,!$l);else{if(a=t.current.alternate,n&&!ly(a)){u=qf(t,l,!1),n=!1;continue}if(u===2){if(n=l,t.errorRecoveryDisabledLanes&n)var i=0;else i=t.pendingLanes&-536870913,i=i!==0?i:i&536870912?536870912:0;if(i!==0){l=i;t:{var f=t;u=yu;var s=f.current.memoizedState.isDehydrated;if(s&&(Te(f,i).flags|=256),i=qf(f,i,!1),i!==2){if(zf&&!s){f.errorRecoveryDisabledLanes|=n,Za|=n,u=4;break t}n=ql,ql=u,n!==null&&Hf(n)}u=i}if(n=!1,u!==2)continue}}if(u===1){Te(t,0),Fl(t,l,0,!0);break}t:{switch(e=t,u){case 0:case 1:throw Error(r(345));case 4:if((l&4194176)===l){Fl(e,l,Tl,!$l);break t}break;case 2:ql=null;break;case 3:case 5:break;default:throw Error(r(329))}if(e.finishedWork=a,e.finishedLanes=l,(l&62914560)===l&&(n=Df+300-Ul(),10a?32:a,B.T=null,Va===null)var n=!1;else{a=Rf,Rf=null;var i=Va,f=mu;if(Va=null,mu=0,(Ot&6)!==0)throw Error(r(331));var s=Ot;if(Ot|=4,ar(i.current),Po(i,i.current,f,a),Ot=s,hu(0,!1),nl&&typeof nl.onPostCommitFiberRoot=="function")try{nl.onPostCommitFiberRoot(He,i)}catch{}n=!0}return n}finally{N.p=u,B.T=e,br(t,l)}}return!1}function _r(t,l,a){l=vl(a,l),l=Fi(t.stateNode,l,2),t=da(t,l,2),t!==null&&(xe(t,2),Cl(t))}function _t(t,l,a){if(t.tag===3)_r(t,t,a);else for(;l!==null;){if(l.tag===3){_r(l,t,a);break}else if(l.tag===1){var e=l.stateNode;if(typeof l.type.getDerivedStateFromError=="function"||typeof e.componentDidCatch=="function"&&(ba===null||!ba.has(e))){t=vl(a,t),a=To(2),e=da(l,a,2),e!==null&&(Eo(a,e,l,t),xe(e,2),Cl(e));break}}l=l.return}}function Cf(t,l,a){var e=t.pingCache;if(e===null){e=t.pingCache=new ty;var u=new Set;e.set(l,u)}else u=e.get(l),u===void 0&&(u=new Set,e.set(l,u));u.has(a)||(zf=!0,u.add(a),t=iy.bind(null,t,l,a),l.then(t,t))}function iy(t,l,a){var e=t.pingCache;e!==null&&e.delete(l),t.pingedLanes|=t.suspendedLanes&a,t.warmLanes&=~a,St===t&&(st&a)===a&&(Rt===4||Rt===3&&(st&62914560)===st&&300>Ul()-Df?(Ot&2)===0&&Te(t,0):Af|=a,Se===st&&(Se=0)),Cl(t)}function pr(t,l){l===0&&(l=Ec()),t=ua(t,l),t!==null&&(xe(t,l),Cl(t))}function fy(t){var l=t.memoizedState,a=0;l!==null&&(a=l.retryLane),pr(t,a)}function cy(t,l){var a=0;switch(t.tag){case 13:var e=t.stateNode,u=t.memoizedState;u!==null&&(a=u.retryLane);break;case 19:e=t.stateNode;break;case 22:e=t.stateNode._retryCache;break;default:throw Error(r(314))}e!==null&&e.delete(l),pr(t,a)}function sy(t,l){return In(t,l)}var Rn=null,Ae=null,Bf=!1,Un=!1,Yf=!1,Ka=0;function Cl(t){t!==Ae&&t.next===null&&(Ae===null?Rn=Ae=t:Ae=Ae.next=t),Un=!0,Bf||(Bf=!0,ry(oy))}function hu(t,l){if(!Yf&&Un){Yf=!0;do for(var a=!1,e=Rn;e!==null;){if(t!==0){var u=e.pendingLanes;if(u===0)var n=0;else{var i=e.suspendedLanes,f=e.pingedLanes;n=(1<<31-il(42|t)+1)-1,n&=u&~(i&~f),n=n&201326677?n&201326677|1:n?n|2:0}n!==0&&(a=!0,Er(e,n))}else n=st,n=Xu(e,e===St?n:0),(n&3)===0||Ne(e,n)||(a=!0,Er(e,n));e=e.next}while(a);Yf=!1}}function oy(){Un=Bf=!1;var t=0;Ka!==0&&(_y()&&(t=Ka),Ka=0);for(var l=Ul(),a=null,e=Rn;e!==null;){var u=e.next,n=Sr(e,l);n===0?(e.next=null,a===null?Rn=u:a.next=u,u===null&&(Ae=a)):(a=e,(t!==0||(n&3)!==0)&&(Un=!0)),e=u}hu(t)}function Sr(t,l){for(var a=t.suspendedLanes,e=t.pingedLanes,u=t.expirationTimes,n=t.pendingLanes&-62914561;0"u"?null:document;function Xr(t,l,a){var e=De;if(e&&typeof l=="string"&&l){var u=yl(l);u='link[rel="'+t+'"][href="'+u+'"]',typeof a=="string"&&(u+='[crossorigin="'+a+'"]'),Yr.has(u)||(Yr.add(u),t={rel:t,crossOrigin:a,href:l},e.querySelector(u)===null&&(l=e.createElement("link"),wt(l,"link",t),Xt(l),e.head.appendChild(l)))}}function Dy(t){Il.D(t),Xr("dns-prefetch",t,null)}function My(t,l){Il.C(t,l),Xr("preconnect",t,l)}function Ry(t,l,a){Il.L(t,l,a);var e=De;if(e&&t&&l){var u='link[rel="preload"][as="'+yl(l)+'"]';l==="image"&&a&&a.imageSrcSet?(u+='[imagesrcset="'+yl(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(u+='[imagesizes="'+yl(a.imageSizes)+'"]')):u+='[href="'+yl(t)+'"]';var n=u;switch(l){case"style":n=Me(t);break;case"script":n=Re(t)}El.has(n)||(t=I({rel:"preload",href:l==="image"&&a&&a.imageSrcSet?void 0:t,as:l},a),El.set(n,t),e.querySelector(u)!==null||l==="style"&&e.querySelector(_u(n))||l==="script"&&e.querySelector(pu(n))||(l=e.createElement("link"),wt(l,"link",t),Xt(l),e.head.appendChild(l)))}}function Uy(t,l){Il.m(t,l);var a=De;if(a&&t){var e=l&&typeof l.as=="string"?l.as:"script",u='link[rel="modulepreload"][as="'+yl(e)+'"][href="'+yl(t)+'"]',n=u;switch(e){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=Re(t)}if(!El.has(n)&&(t=I({rel:"modulepreload",href:t},l),El.set(n,t),a.querySelector(u)===null)){switch(e){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(pu(n)))return}e=a.createElement("link"),wt(e,"link",t),Xt(e),a.head.appendChild(e)}}}function Hy(t,l,a){Il.S(t,l,a);var e=De;if(e&&t){var u=Fa(e).hoistableStyles,n=Me(t);l=l||"default";var i=u.get(n);if(!i){var f={loading:0,preload:null};if(i=e.querySelector(_u(n)))f.loading=5;else{t=I({rel:"stylesheet",href:t,"data-precedence":l},a),(a=El.get(n))&&Ff(t,a);var s=i=e.createElement("link");Xt(s),wt(s,"link",t),s._p=new Promise(function(m,S){s.onload=m,s.onerror=S}),s.addEventListener("load",function(){f.loading|=1}),s.addEventListener("error",function(){f.loading|=2}),f.loading|=4,Bn(i,l,e)}i={type:"stylesheet",instance:i,count:1,state:f},u.set(n,i)}}}function Ny(t,l){Il.X(t,l);var a=De;if(a&&t){var e=Fa(a).hoistableScripts,u=Re(t),n=e.get(u);n||(n=a.querySelector(pu(u)),n||(t=I({src:t,async:!0},l),(l=El.get(u))&&If(t,l),n=a.createElement("script"),Xt(n),wt(n,"link",t),a.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},e.set(u,n))}}function xy(t,l){Il.M(t,l);var a=De;if(a&&t){var e=Fa(a).hoistableScripts,u=Re(t),n=e.get(u);n||(n=a.querySelector(pu(u)),n||(t=I({src:t,async:!0,type:"module"},l),(l=El.get(u))&&If(t,l),n=a.createElement("script"),Xt(n),wt(n,"link",t),a.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},e.set(u,n))}}function jr(t,l,a,e){var u=(u=ta.current)?Cn(u):null;if(!u)throw Error(r(446));switch(t){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(l=Me(a.href),a=Fa(u).hoistableStyles,e=a.get(l),e||(e={type:"style",instance:null,count:0,state:null},a.set(l,e)),e):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){t=Me(a.href);var n=Fa(u).hoistableStyles,i=n.get(t);if(i||(u=u.ownerDocument||u,i={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(t,i),(n=u.querySelector(_u(t)))&&!n._p&&(i.instance=n,i.state.loading=5),El.has(t)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},El.set(t,a),n||qy(u,t,a,i.state))),l&&e===null)throw Error(r(528,""));return i}if(l&&e!==null)throw Error(r(529,""));return null;case"script":return l=a.async,a=a.src,typeof a=="string"&&l&&typeof l!="function"&&typeof l!="symbol"?(l=Re(a),a=Fa(u).hoistableScripts,e=a.get(l),e||(e={type:"script",instance:null,count:0,state:null},a.set(l,e)),e):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,t))}}function Me(t){return'href="'+yl(t)+'"'}function _u(t){return'link[rel="stylesheet"]['+t+"]"}function Gr(t){return I({},t,{"data-precedence":t.precedence,precedence:null})}function qy(t,l,a,e){t.querySelector('link[rel="preload"][as="style"]['+l+"]")?e.loading=1:(l=t.createElement("link"),e.preload=l,l.addEventListener("load",function(){return e.loading|=1}),l.addEventListener("error",function(){return e.loading|=2}),wt(l,"link",a),Xt(l),t.head.appendChild(l))}function Re(t){return'[src="'+yl(t)+'"]'}function pu(t){return"script[async]"+t}function Qr(t,l,a){if(l.count++,l.instance===null)switch(l.type){case"style":var e=t.querySelector('style[data-href~="'+yl(a.href)+'"]');if(e)return l.instance=e,Xt(e),e;var u=I({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return e=(t.ownerDocument||t).createElement("style"),Xt(e),wt(e,"style",u),Bn(e,a.precedence,t),l.instance=e;case"stylesheet":u=Me(a.href);var n=t.querySelector(_u(u));if(n)return l.state.loading|=4,l.instance=n,Xt(n),n;e=Gr(a),(u=El.get(u))&&Ff(e,u),n=(t.ownerDocument||t).createElement("link"),Xt(n);var i=n;return i._p=new Promise(function(f,s){i.onload=f,i.onerror=s}),wt(n,"link",e),l.state.loading|=4,Bn(n,a.precedence,t),l.instance=n;case"script":return n=Re(a.src),(u=t.querySelector(pu(n)))?(l.instance=u,Xt(u),u):(e=a,(u=El.get(n))&&(e=I({},a),If(e,u)),t=t.ownerDocument||t,u=t.createElement("script"),Xt(u),wt(u,"link",e),t.head.appendChild(u),l.instance=u);case"void":return null;default:throw Error(r(443,l.type))}else l.type==="stylesheet"&&(l.state.loading&4)===0&&(e=l.instance,l.state.loading|=4,Bn(e,a.precedence,t));return l.instance}function Bn(t,l,a){for(var e=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),u=e.length?e[e.length-1]:null,n=u,i=0;i title"):null)}function Cy(t,l,a){if(a===1||l.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof l.precedence!="string"||typeof l.href!="string"||l.href==="")break;return!0;case"link":if(typeof l.rel!="string"||typeof l.href!="string"||l.href===""||l.onLoad||l.onError)break;switch(l.rel){case"stylesheet":return t=l.disabled,typeof l.precedence=="string"&&t==null;default:return!0}case"script":if(l.async&&typeof l.async!="function"&&typeof l.async!="symbol"&&!l.onLoad&&!l.onError&&l.src&&typeof l.src=="string")return!0}return!1}function Vr(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}var Su=null;function By(){}function Yy(t,l,a){if(Su===null)throw Error(r(475));var e=Su;if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var u=Me(a.href),n=t.querySelector(_u(u));if(n){t=n._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Xn.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=n,Xt(n);return}n=t.ownerDocument||t,a=Gr(a),(u=El.get(u))&&Ff(a,u),n=n.createElement("link"),Xt(n);var i=n;i._p=new Promise(function(f,s){i.onload=f,i.onerror=s}),wt(n,"link",a),l.instance=n}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&(l.state.loading&3)===0&&(e.count++,l=Xn.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}function Xy(){if(Su===null)throw Error(r(475));var t=Su;return t.stylesheets&&t.count===0&&Pf(t,t.stylesheets),0"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(c)}catch(o){console.error(o)}}return c(),fc.exports=am(),fc.exports}var um=em();const nm="modulepreload",im=function(c){return"/root/assistant-base-app/"+c},dd={},gd=function(o,v,r){let E=Promise.resolve();if(v&&v.length>0){document.getElementsByTagName("link");const A=document.querySelector("meta[property=csp-nonce]"),H=A?.nonce||A?.getAttribute("nonce");E=Promise.allSettled(v.map(T=>{if(T=im(T),T in dd)return;dd[T]=!0;const b=T.endsWith(".css"),R=b?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${T}"]${R}`))return;const C=document.createElement("link");if(C.rel=b?"stylesheet":nm,b||(C.as="script"),C.crossOrigin="",C.href=T,H&&C.setAttribute("nonce",H),document.head.appendChild(C),b)return new Promise((Q,J)=>{C.addEventListener("load",Q),C.addEventListener("error",()=>J(new Error(`Unable to preload CSS for ${T}`)))})}))}function D(A){const H=new Event("vite:preloadError",{cancelable:!0});if(H.payload=A,window.dispatchEvent(H),!H.defaultPrevented)throw A}return E.then(A=>{for(const H of A||[])H.status==="rejected"&&D(H.reason);return o().catch(D)})};var Et=gc();const ht=ky(Et),fm="/root/assistant-base-app";function bd(c){var o,v,r="";if(typeof c=="string"||typeof c=="number")r+=c;else if(typeof c=="object")if(Array.isArray(c)){var E=c.length;for(o=0;o"u")return;let o=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css",o.firstChild?o.insertBefore(v,o.firstChild):o.appendChild(v),v.styleSheet?v.styleSheet.cssText=c:v.appendChild(document.createTextNode(c))}cm(`:root{--toastify-color-light: #fff;--toastify-color-dark: #121212;--toastify-color-info: #3498db;--toastify-color-success: #07bc0c;--toastify-color-warning: #f1c40f;--toastify-color-error: hsl(6, 78%, 57%);--toastify-color-transparent: rgba(255, 255, 255, .7);--toastify-icon-color-info: var(--toastify-color-info);--toastify-icon-color-success: var(--toastify-color-success);--toastify-icon-color-warning: var(--toastify-color-warning);--toastify-icon-color-error: var(--toastify-color-error);--toastify-container-width: fit-content;--toastify-toast-width: 320px;--toastify-toast-offset: 16px;--toastify-toast-top: max(var(--toastify-toast-offset), env(safe-area-inset-top));--toastify-toast-right: max(var(--toastify-toast-offset), env(safe-area-inset-right));--toastify-toast-left: max(var(--toastify-toast-offset), env(safe-area-inset-left));--toastify-toast-bottom: max(var(--toastify-toast-offset), env(safe-area-inset-bottom));--toastify-toast-background: #fff;--toastify-toast-padding: 14px;--toastify-toast-min-height: 64px;--toastify-toast-max-height: 800px;--toastify-toast-bd-radius: 6px;--toastify-toast-shadow: 0px 4px 12px rgba(0, 0, 0, .1);--toastify-font-family: sans-serif;--toastify-z-index: 9999;--toastify-text-color-light: #757575;--toastify-text-color-dark: #fff;--toastify-text-color-info: #fff;--toastify-text-color-success: #fff;--toastify-text-color-warning: #fff;--toastify-text-color-error: #fff;--toastify-spinner-color: #616161;--toastify-spinner-color-empty-area: #e0e0e0;--toastify-color-progress-light: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55);--toastify-color-progress-dark: #bb86fc;--toastify-color-progress-info: var(--toastify-color-info);--toastify-color-progress-success: var(--toastify-color-success);--toastify-color-progress-warning: var(--toastify-color-warning);--toastify-color-progress-error: var(--toastify-color-error);--toastify-color-progress-bgo: .2}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translate3d(0,0,var(--toastify-z-index));position:fixed;width:var(--toastify-container-width);box-sizing:border-box;color:#fff;display:flex;flex-direction:column}.Toastify__toast-container--top-left{top:var(--toastify-toast-top);left:var(--toastify-toast-left)}.Toastify__toast-container--top-center{top:var(--toastify-toast-top);left:50%;transform:translate(-50%);align-items:center}.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right);align-items:end}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:var(--toastify-toast-bottom);left:50%;transform:translate(-50%);align-items:center}.Toastify__toast-container--bottom-right{bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right);align-items:end}.Toastify__toast{--y: 0;position:relative;touch-action:none;width:var(--toastify-toast-width);min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:var(--toastify-toast-padding);border-radius:var(--toastify-toast-bd-radius);box-shadow:var(--toastify-toast-shadow);max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);z-index:0;display:flex;flex:1 auto;align-items:center;word-break:break-word}@media only screen and (max-width: 480px){.Toastify__toast-container{width:100vw;left:env(safe-area-inset-left);margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translate(0)}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translate(0)}.Toastify__toast-container--rtl{right:env(safe-area-inset-right);left:initial}.Toastify__toast{--toastify-toast-width: 100%;margin-bottom:0;border-radius:0}}.Toastify__toast-container[data-stacked=true]{width:var(--toastify-toast-width)}.Toastify__toast--stacked{position:absolute;width:100%;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s}.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body,.Toastify__toast--stacked[data-collapsed] .Toastify__close-button{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{content:"";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:"";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-icon{margin-inline-end:10px;width:22px;flex-shrink:0;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--light,.Toastify__toast-theme--colored.Toastify__toast--default{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;position:absolute;top:6px;right:6px;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;z-index:1}.Toastify__toast--rtl .Toastify__close-button{left:6px;right:unset}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:1;opacity:.7;transform-origin:left}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right;border-bottom-left-radius:initial}.Toastify__progress-bar--wrp{position:absolute;overflow:hidden;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius);border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}} +`);var Uu=c=>typeof c=="number"&&!isNaN(c),Ja=c=>typeof c=="string",Pl=c=>typeof c=="function",sm=c=>Ja(c)||Uu(c),dc=c=>Ja(c)||Pl(c)?c:null,om=(c,o)=>c===!1||Uu(c)&&c>0?c:o,yc=c=>Et.isValidElement(c)||Ja(c)||Pl(c)||Uu(c);function rm(c,o,v=300){let{scrollHeight:r,style:E}=c;requestAnimationFrame(()=>{E.minHeight="initial",E.height=r+"px",E.transition=`all ${v}ms`,requestAnimationFrame(()=>{E.height="0",E.padding="0",E.margin="0",setTimeout(o,v)})})}function dm({enter:c,exit:o,appendPosition:v=!1,collapse:r=!0,collapseDuration:E=300}){return function({children:D,position:A,preventExitTransition:H,done:T,nodeRef:b,isIn:R,playToast:C}){let Q=v?`${c}--${A}`:c,J=v?`${o}--${A}`:o,dt=Et.useRef(0);return Et.useLayoutEffect(()=>{let et=b.current,W=Q.split(" "),P=x=>{x.target===b.current&&(C(),et.removeEventListener("animationend",P),et.removeEventListener("animationcancel",P),dt.current===0&&x.type!=="animationcancel"&&et.classList.remove(...W))};et.classList.add(...W),et.addEventListener("animationend",P),et.addEventListener("animationcancel",P)},[]),Et.useEffect(()=>{let et=b.current,W=()=>{et.removeEventListener("animationend",W),r?rm(et,T,E):T()};R||(H?W():(dt.current=1,et.className+=` ${J}`,et.addEventListener("animationend",W)))},[R]),ht.createElement(ht.Fragment,null,D)}}function yd(c,o){return{content:_d(c.content,c.props),containerId:c.props.containerId,id:c.props.toastId,theme:c.props.theme,type:c.props.type,data:c.props.data||{},isLoading:c.props.isLoading,icon:c.props.icon,reason:c.removalReason,status:o}}function _d(c,o,v=!1){return Et.isValidElement(c)&&!Ja(c.type)?Et.cloneElement(c,{closeToast:o.closeToast,toastProps:o,data:o.data,isPaused:v}):Pl(c)?c({closeToast:o.closeToast,toastProps:o,data:o.data,isPaused:v}):c}function ym({closeToast:c,theme:o,ariaLabel:v="close"}){return ht.createElement("button",{className:`Toastify__close-button Toastify__close-button--${o}`,type:"button",onClick:r=>{r.stopPropagation(),c(!0)},"aria-label":v},ht.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},ht.createElement("path",{fillRule:"evenodd",d:"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"})))}function mm({delay:c,isRunning:o,closeToast:v,type:r="default",hide:E,className:D,controlledProgress:A,progress:H,rtl:T,isIn:b,theme:R}){let C=E||A&&H===0,Q={animationDuration:`${c}ms`,animationPlayState:o?"running":"paused"};A&&(Q.transform=`scaleX(${H})`);let J=wa("Toastify__progress-bar",A?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${R}`,`Toastify__progress-bar--${r}`,{"Toastify__progress-bar--rtl":T}),dt=Pl(D)?D({rtl:T,type:r,defaultClassName:J}):wa(J,D),et={[A&&H>=1?"onTransitionEnd":"onAnimationEnd"]:A&&H<1?null:()=>{b&&v()}};return ht.createElement("div",{className:"Toastify__progress-bar--wrp","data-hidden":C},ht.createElement("div",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${R} Toastify__progress-bar--${r}`}),ht.createElement("div",{role:"progressbar","aria-hidden":C?"true":"false","aria-label":"notification timer",className:dt,style:Q,...et}))}var vm=1,pd=()=>`${vm++}`;function hm(c,o,v){let r=1,E=0,D=[],A=[],H=o,T=new Map,b=new Set,R=x=>(b.add(x),()=>b.delete(x)),C=()=>{A=Array.from(T.values()),b.forEach(x=>x())},Q=({containerId:x,toastId:X,updateId:$})=>{let L=x?x!==c:c!==1,vt=T.has(X)&&$==null;return L||vt},J=(x,X)=>{T.forEach($=>{var L;(X==null||X===$.props.toastId)&&((L=$.toggle)==null||L.call($,x))})},dt=x=>{var X,$;($=(X=x.props)==null?void 0:X.onClose)==null||$.call(X,x.removalReason),x.isActive=!1},et=x=>{if(x==null)T.forEach(dt);else{let X=T.get(x);X&&dt(X)}C()},W=()=>{E-=D.length,D=[]},P=x=>{var X,$;let{toastId:L,updateId:vt}=x.props,tt=vt==null;x.staleId&&T.delete(x.staleId),x.isActive=!0,T.set(L,x),C(),v(yd(x,tt?"added":"updated")),tt&&(($=(X=x.props).onOpen)==null||$.call(X))};return{id:c,props:H,observe:R,toggle:J,removeToast:et,toasts:T,clearQueue:W,buildToast:(x,X)=>{if(Q(X))return;let{toastId:$,updateId:L,data:vt,staleId:tt,delay:it}=X,B=L==null;B&&E++;let I={...H,style:H.toastStyle,key:r++,...Object.fromEntries(Object.entries(X).filter(([Lt,Wt])=>Wt!=null)),toastId:$,updateId:L,data:vt,isIn:!1,className:dc(X.className||H.toastClassName),progressClassName:dc(X.progressClassName||H.progressClassName),autoClose:X.isLoading?!1:om(X.autoClose,H.autoClose),closeToast(Lt){T.get($).removalReason=Lt,et($)},deleteToast(){let Lt=T.get($);if(Lt!=null){if(v(yd(Lt,"removed")),T.delete($),E--,E<0&&(E=0),D.length>0){P(D.shift());return}C()}}};I.closeButton=H.closeButton,X.closeButton===!1||yc(X.closeButton)?I.closeButton=X.closeButton:X.closeButton===!0&&(I.closeButton=yc(H.closeButton)?H.closeButton:!0);let Dt={content:x,props:I,staleId:tt};H.limit&&H.limit>0&&E>H.limit&&B?D.push(Dt):Uu(it)?setTimeout(()=>{P(Dt)},it):P(Dt)},setProps(x){H=x},setToggle:(x,X)=>{let $=T.get(x);$&&($.toggle=X)},isToastActive:x=>{var X;return(X=T.get(x))==null?void 0:X.isActive},getSnapshot:()=>A}}var ll=new Map,Ru=[],mc=new Set,gm=c=>mc.forEach(o=>o(c)),Sd=()=>ll.size>0;function bm(){Ru.forEach(c=>Ed(c.content,c.options)),Ru=[]}var _m=(c,{containerId:o})=>{var v;return(v=ll.get(o||1))==null?void 0:v.toasts.get(c)};function Td(c,o){var v;if(o)return!!((v=ll.get(o))!=null&&v.isToastActive(c));let r=!1;return ll.forEach(E=>{E.isToastActive(c)&&(r=!0)}),r}function pm(c){if(!Sd()){Ru=Ru.filter(o=>c!=null&&o.options.toastId!==c);return}if(c==null||sm(c))ll.forEach(o=>{o.removeToast(c)});else if(c&&("containerId"in c||"id"in c)){let o=ll.get(c.containerId);o?o.removeToast(c.id):ll.forEach(v=>{v.removeToast(c.id)})}}var Sm=(c={})=>{ll.forEach(o=>{o.props.limit&&(!c.containerId||o.id===c.containerId)&&o.clearQueue()})};function Ed(c,o){yc(c)&&(Sd()||Ru.push({content:c,options:o}),ll.forEach(v=>{v.buildToast(c,o)}))}function Tm(c){var o;(o=ll.get(c.containerId||1))==null||o.setToggle(c.id,c.fn)}function zd(c,o){ll.forEach(v=>{(o==null||!(o!=null&&o.containerId)||o?.containerId===v.id)&&v.toggle(c,o?.id)})}function Em(c){let o=c.containerId||1;return{subscribe(v){let r=hm(o,c,gm);ll.set(o,r);let E=r.observe(v);return bm(),()=>{E(),ll.delete(o)}},setProps(v){var r;(r=ll.get(o))==null||r.setProps(v)},getSnapshot(){var v;return(v=ll.get(o))==null?void 0:v.getSnapshot()}}}function zm(c){return mc.add(c),()=>{mc.delete(c)}}function Am(c){return c&&(Ja(c.toastId)||Uu(c.toastId))?c.toastId:pd()}function Hu(c,o){return Ed(c,o),o.toastId}function Jn(c,o){return{...o,type:o&&o.type||c,toastId:Am(o)}}function kn(c){return(o,v)=>Hu(o,Jn(c,v))}function yt(c,o){return Hu(c,Jn("default",o))}yt.loading=(c,o)=>Hu(c,Jn("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...o}));function Om(c,{pending:o,error:v,success:r},E){let D;o&&(D=Ja(o)?yt.loading(o,E):yt.loading(o.render,{...E,...o}));let A={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},H=(b,R,C)=>{if(R==null){yt.dismiss(D);return}let Q={type:b,...A,...E,data:C},J=Ja(R)?{render:R}:R;return D?yt.update(D,{...Q,...J}):yt(J.render,{...Q,...J}),C},T=Pl(c)?c():c;return T.then(b=>H("success",r,b)).catch(b=>H("error",v,b)),T}yt.promise=Om;yt.success=kn("success");yt.info=kn("info");yt.error=kn("error");yt.warning=kn("warning");yt.warn=yt.warning;yt.dark=(c,o)=>Hu(c,Jn("default",{theme:"dark",...o}));function Dm(c){pm(c)}yt.dismiss=Dm;yt.clearWaitingQueue=Sm;yt.isActive=Td;yt.update=(c,o={})=>{let v=_m(c,o);if(v){let{props:r,content:E}=v,D={delay:100,...r,...o,toastId:o.toastId||c,updateId:pd()};D.toastId!==c&&(D.staleId=c);let A=D.render||E;delete D.render,Hu(A,D)}};yt.done=c=>{yt.update(c,{progress:1})};yt.onChange=zm;yt.play=c=>zd(!0,c);yt.pause=c=>zd(!1,c);function Mm(c){var o;let{subscribe:v,getSnapshot:r,setProps:E}=Et.useRef(Em(c)).current;E(c);let D=(o=Et.useSyncExternalStore(v,r,r))==null?void 0:o.slice();function A(H){if(!D)return[];let T=new Map;return c.newestOnTop&&D.reverse(),D.forEach(b=>{let{position:R}=b.props;T.has(R)||T.set(R,[]),T.get(R).push(b)}),Array.from(T,b=>H(b[0],b[1]))}return{getToastToRender:A,isToastActive:Td,count:D?.length}}function Rm(c){let[o,v]=Et.useState(!1),[r,E]=Et.useState(!1),D=Et.useRef(null),A=Et.useRef({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:H,pauseOnHover:T,closeToast:b,onClick:R,closeOnClick:C}=c;Tm({id:c.toastId,containerId:c.containerId,fn:v}),Et.useEffect(()=>{if(c.pauseOnFocusLoss)return Q(),()=>{J()}},[c.pauseOnFocusLoss]);function Q(){document.hasFocus()||P(),window.addEventListener("focus",W),window.addEventListener("blur",P)}function J(){window.removeEventListener("focus",W),window.removeEventListener("blur",P)}function dt(tt){if(c.draggable===!0||c.draggable===tt.pointerType){x();let it=D.current;A.canCloseOnClick=!0,A.canDrag=!0,it.style.transition="none",c.draggableDirection==="x"?(A.start=tt.clientX,A.removalDistance=it.offsetWidth*(c.draggablePercent/100)):(A.start=tt.clientY,A.removalDistance=it.offsetHeight*(c.draggablePercent===80?c.draggablePercent*1.5:c.draggablePercent)/100)}}function et(tt){let{top:it,bottom:B,left:I,right:Dt}=D.current.getBoundingClientRect();tt.nativeEvent.type!=="touchend"&&c.pauseOnHover&&tt.clientX>=I&&tt.clientX<=Dt&&tt.clientY>=it&&tt.clientY<=B?P():W()}function W(){v(!0)}function P(){v(!1)}function x(){A.didMove=!1,document.addEventListener("pointermove",$),document.addEventListener("pointerup",L)}function X(){document.removeEventListener("pointermove",$),document.removeEventListener("pointerup",L)}function $(tt){let it=D.current;if(A.canDrag&&it){A.didMove=!0,o&&P(),c.draggableDirection==="x"?A.delta=tt.clientX-A.start:A.delta=tt.clientY-A.start,A.start!==tt.clientX&&(A.canCloseOnClick=!1);let B=c.draggableDirection==="x"?`${A.delta}px, var(--y)`:`0, calc(${A.delta}px + var(--y))`;it.style.transform=`translate3d(${B},0)`,it.style.opacity=`${1-Math.abs(A.delta/A.removalDistance)}`}}function L(){X();let tt=D.current;if(A.canDrag&&A.didMove&&tt){if(A.canDrag=!1,Math.abs(A.delta)>A.removalDistance){E(!0),c.closeToast(!0),c.collapseAll();return}tt.style.transition="transform 0.2s, opacity 0.2s",tt.style.removeProperty("transform"),tt.style.removeProperty("opacity")}}let vt={onPointerDown:dt,onPointerUp:et};return H&&T&&(vt.onMouseEnter=P,c.stacked||(vt.onMouseLeave=W)),C&&(vt.onClick=tt=>{R&&R(tt),A.canCloseOnClick&&b(!0)}),{playToast:W,pauseToast:P,isRunning:o,preventExitTransition:r,toastRef:D,eventHandlers:vt}}var Um=typeof window<"u"?Et.useLayoutEffect:Et.useEffect,$n=({theme:c,type:o,isLoading:v,...r})=>ht.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:c==="colored"?"currentColor":`var(--toastify-icon-color-${o})`,...r});function Hm(c){return ht.createElement($n,{...c},ht.createElement("path",{d:"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z"}))}function Nm(c){return ht.createElement($n,{...c},ht.createElement("path",{d:"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z"}))}function xm(c){return ht.createElement($n,{...c},ht.createElement("path",{d:"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z"}))}function qm(c){return ht.createElement($n,{...c},ht.createElement("path",{d:"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"}))}function Cm(){return ht.createElement("div",{className:"Toastify__spinner"})}var vc={info:Nm,warning:Hm,success:xm,error:qm,spinner:Cm},Bm=c=>c in vc;function Ym({theme:c,type:o,isLoading:v,icon:r}){let E=null,D={theme:c,type:o};return r===!1||(Pl(r)?E=r({...D,isLoading:v}):Et.isValidElement(r)?E=Et.cloneElement(r,D):v?E=vc.spinner():Bm(o)&&(E=vc[o](D))),E}var Xm=c=>{let{isRunning:o,preventExitTransition:v,toastRef:r,eventHandlers:E,playToast:D}=Rm(c),{closeButton:A,children:H,autoClose:T,onClick:b,type:R,hideProgressBar:C,closeToast:Q,transition:J,position:dt,className:et,style:W,progressClassName:P,updateId:x,role:X,progress:$,rtl:L,toastId:vt,deleteToast:tt,isIn:it,isLoading:B,closeOnClick:I,theme:Dt,ariaLabel:Lt}=c,Wt=wa("Toastify__toast",`Toastify__toast-theme--${Dt}`,`Toastify__toast--${R}`,{"Toastify__toast--rtl":L},{"Toastify__toast--close-on-click":I}),zl=Pl(et)?et({rtl:L,position:dt,type:R,defaultClassName:Wt}):wa(Wt,et),Zt=Ym(c),U=!!$||!T,w={closeToast:Q,type:R,theme:Dt},G=null;return A===!1||(Pl(A)?G=A(w):Et.isValidElement(A)?G=Et.cloneElement(A,w):G=ym(w)),ht.createElement(J,{isIn:it,done:tt,position:dt,preventExitTransition:v,nodeRef:r,playToast:D},ht.createElement("div",{id:vt,tabIndex:0,onClick:b,"data-in":it,className:zl,...E,style:W,ref:r,...it&&{role:X,"aria-label":Lt}},Zt!=null&&ht.createElement("div",{className:wa("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!B})},Zt),_d(H,c,!o),G,!c.customProgressBar&&ht.createElement(mm,{...x&&!U?{key:`p-${x}`}:{},rtl:L,theme:Dt,delay:T,isRunning:o,isIn:it,closeToast:Q,hide:C,type:R,className:P,controlledProgress:U,progress:$||0})))},jm=(c,o=!1)=>({enter:`Toastify--animate Toastify__${c}-enter`,exit:`Toastify--animate Toastify__${c}-exit`,appendPosition:o}),Gm=dm(jm("bounce",!0)),Qm={position:"top-right",transition:Gm,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:"touch",draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light","aria-label":"Notifications Alt+T",hotKeys:c=>c.altKey&&c.code==="KeyT"};function Lm(c){let o={...Qm,...c},v=c.stacked,[r,E]=Et.useState(!0),D=Et.useRef(null),{getToastToRender:A,isToastActive:H,count:T}=Mm(o),{className:b,style:R,rtl:C,containerId:Q,hotKeys:J}=o;function dt(W){let P=wa("Toastify__toast-container",`Toastify__toast-container--${W}`,{"Toastify__toast-container--rtl":C});return Pl(b)?b({position:W,rtl:C,defaultClassName:P}):wa(P,dc(b))}function et(){v&&(E(!0),yt.play())}return Um(()=>{var W;if(v){let P=D.current.querySelectorAll('[data-in="true"]'),x=12,X=(W=o.position)==null?void 0:W.includes("top"),$=0,L=0;Array.from(P).reverse().forEach((vt,tt)=>{let it=vt;it.classList.add("Toastify__toast--stacked"),tt>0&&(it.dataset.collapsed=`${r}`),it.dataset.pos||(it.dataset.pos=X?"top":"bot");let B=$*(r?.2:1)+(r?0:x*tt);it.style.setProperty("--y",`${X?B:B*-1}px`),it.style.setProperty("--g",`${x}`),it.style.setProperty("--s",`${1-(r?L:0)}`),$+=it.offsetHeight,L+=.025})}},[r,T,v]),Et.useEffect(()=>{function W(P){var x;let X=D.current;J(P)&&((x=X.querySelector('[tabIndex="0"]'))==null||x.focus(),E(!1),yt.pause()),P.key==="Escape"&&(document.activeElement===X||X!=null&&X.contains(document.activeElement))&&(E(!0),yt.play())}return document.addEventListener("keydown",W),()=>{document.removeEventListener("keydown",W)}},[J]),ht.createElement("section",{ref:D,className:"Toastify",id:Q,onMouseEnter:()=>{v&&(E(!1),yt.pause())},onMouseLeave:et,"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text","aria-label":o["aria-label"]},A((W,P)=>{let x=P.length?{...R}:{...R,pointerEvents:"none"};return ht.createElement("div",{tabIndex:-1,className:dt(W),"data-stacked":v,style:x,key:`c-${W}`},P.map(({content:X,props:$})=>ht.createElement(Xm,{...$,stacked:v,collapseAll:et,isIn:H($.toastId,$.containerId),key:`t-${$.key}`},X)))}))}const md=c=>{let o;const v=new Set,r=(b,R)=>{const C=typeof b=="function"?b(o):b;if(!Object.is(C,o)){const Q=o;o=R??(typeof C!="object"||C===null)?C:Object.assign({},o,C),v.forEach(J=>J(o,Q))}},E=()=>o,H={setState:r,getState:E,getInitialState:()=>T,subscribe:b=>(v.add(b),()=>v.delete(b))},T=o=c(r,E,H);return H},Zm=c=>c?md(c):md,Vm=c=>c;function Km(c,o=Vm){const v=ht.useSyncExternalStore(c.subscribe,()=>o(c.getState()),()=>o(c.getInitialState()));return ht.useDebugValue(v),v}const vd=c=>{const o=Zm(c),v=r=>Km(o,r);return Object.assign(v,o),v},Ad=c=>c?vd(c):vd,wm={},Jm=async c=>{const o=new AbortController,v=o.signal,r=c.timeout||6e4*3,E=setTimeout(()=>{o.abort()},r);return fetch(c.url,{method:"POST",headers:{"Content-Type":"application/json",...c.headers},body:JSON.stringify(c.body),signal:v}).then(D=>{const A=D.headers.get("Content-Type");return A&&A.includes("application/json")?D.json():D.text()}).catch(D=>(D.name==="AbortError"&&console.log("Request timed out and was aborted"),console.error(D),{code:500})).finally(()=>{clearTimeout(E)})},hd=c=>{let o;const v=new Set,r=(R,C)=>{const Q=typeof R=="function"?R(o):R;if(!Object.is(Q,o)){const J=o;o=C??(typeof Q!="object"||Q===null)?Q:Object.assign({},o,Q),v.forEach(dt=>dt(o,J))}},E=()=>o,T={setState:r,getState:E,getInitialState:()=>b,subscribe:R=>(v.add(R),()=>v.delete(R)),destroy:()=>{(wm?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),v.clear()}},b=o=c(r,E,T);return T},km=c=>c?hd(c):hd,$m=c=>{try{return new URL(c),c}catch{const v=new URL(c,location.origin);return v.protocol==="http:"&&(v.protocol="ws:"),v.protocol==="https:"&&(v.protocol="wss:"),v.href}};class Wm{url;store;ws;constructor(o){const v=o?.url||"/api/router";if(o?.store)this.store=o.store;else{const E=km(D=>({connected:!1,status:"connecting",setConnected:A=>D({connected:A}),setStatus:A=>D({status:A})}));this.store=E}const r=$m(v);o?.ws&&o.ws instanceof WebSocket?this.ws=o.ws:this.ws=new WebSocket(r),this.connect()}async connect(o){const v=this.store;return v.getState().connected?Promise.resolve(!0):new Promise((E,D)=>{const A=this.ws||new WebSocket(this.url),H=o?.timeout||5*60*1e3;let T=setTimeout(()=>{console.error("WebSocket 连接超时"),D("timeout")},H);A.onopen=()=>{v.getState().setConnected(!0),v.getState().setStatus("connected"),E(!0),clearTimeout(T)},A.onclose=()=>{v.getState().setConnected(!1),v.getState().setStatus("disconnected"),this.ws=null}})}listenConnect(o){const v=this.store,{connected:r}=v.getState();if(r){o();return}return((A,H)=>{const T=v.subscribe((b,R)=>{A(b)!==A(R)&&(H(b,R),T())});return T})(A=>A.connected,()=>{o()})}onMessage(o,v){const r=this.ws,E=v?.isJson??!0,D=v?.selector,A=T=>{try{return JSON.parse(T)}catch{return T}},H=T=>{const b=A(T.data);typeof b=="string"&&!E?o(b,T):typeof b=="object"&&E&&o(D?D(b):b,T)};return r.addEventListener("message",H),()=>{r.removeEventListener("message",H)}}close(){const o=this.ws,v=this.store;o?.close?.(),this.ws=null,v.getState().setConnected(!1),v.getState().setStatus("disconnected")}send(o,v){const r=this.ws,E=v?.isJson??!0,D=v?.wrapper;if(!r||r.readyState!==WebSocket.OPEN){console.error("WebSocket is not open");return}E?r.send(JSON.stringify(D?D(o):o)):r.send(o)}getOpen(){return this.ws?this.ws.readyState===WebSocket.OPEN:!1}}class Fm{adapter;url;beforeRequest;afterResponse;headers;timeout;constructor(o){this.adapter=o?.adapter||Jm,this.url=o?.url||"/api/router",this.headers=o?.headers||{"Content-Type":"application/json"},this.timeout=o?.timeout||6e4*3}async get(o,v){return this.post(o,v)}async post(o,v){const r=v?.url||this.url,E={...this.headers,...v?.headers},D=v?.adapter||this.adapter,A=v?.beforeRequest||this.beforeRequest,H=v?.afterResponse||this.afterResponse,T=v?.timeout||this.timeout,b={url:r,headers:E,body:o,timeout:T};return A&&await A(b),D(b).then(async R=>(R.success=R.code===200,H?await H(R):R))}before(o){this.beforeRequest=o}after(o){this.afterResponse=o}}class bc extends Fm{tokenName;storage;token;qws;constructor(o){super(o),this.tokenName=o?.tokenName||"token",this.storage=o?.storage||localStorage,this.beforeRequest=async v=>{const r=this.token||this.getToken();return r&&(v.headers={...v.headers,Authorization:`Bearer ${r}`}),v},o?.io&&this.createWs()}createWs(o){this.qws=new Wm({url:this.url,...o})}getToken(){return this.storage.getItem(this.tokenName)}saveToken(o){this.storage.setItem(this.tokenName,o)}removeToken(){this.storage.removeItem(this.tokenName)}}new bc;const hc=new bc({url:"/client/router",io:!1}),ev=new bc({}),Im=Ad(c=>({isClient:!1,setIsClient:o=>c({isClient:o}),mount:!1,setMount:o=>c({mount:o}),checkClient:async()=>{if(window?.electron){c({isClient:!0,mount:!0});return}try{if((await hc.post({path:"check"})).code===200){c({isClient:!0,mount:!0});return}}catch(v){console.error(v)}c({mount:!0})}})),Pm=Ad(c=>({config:{},setConfig:o=>c({config:o}),getConfig:async()=>{const o=await hc.post({path:"config"});o.code===200?(console.log(o.data),c({config:o.data,pageApi:o.data?.pageApi||""})):yt.error(o.message||"获取配置失败")},pageApi:"",setPageApi:o=>c({pageApi:o}),saveConfig:async o=>{if(console.log(o),!o){yt.error("配置不能为空");return}const v=await hc.post({path:"config",key:"set",data:{pageApi:o}});v.code===200?yt.success("保存配置成功"):yt.error(v.message||"保存配置失败")}}));console.log("basename",fm);const tv=ht.lazy(()=>gd(()=>import("./index-B3OKg3E6.js"),__vite__mapDeps([0,1]))),lv=ht.lazy(()=>gd(()=>import("./Enter-BnWSbQup.js"),__vite__mapDeps([2,3]))),av=()=>{const o=new URL(window.location.href).searchParams.get("link"),{checkClient:v,mount:r,isClient:E}=Im(),{getConfig:D}=Pm();Et.useEffect(()=>{v()},[]),Et.useEffect(()=>{E&&D()},[E]);const A=Et.useMemo(()=>o?o.includes("enter"):!0,[o]);return r?tl.jsxs(tl.Fragment,{children:[tl.jsx("nav",{className:"bg-amber-500 p-4 sticky top-0 z-10",children:tl.jsxs("ul",{className:"flex space-x-4",children:[tl.jsx("li",{className:A?"text-white":"text-white/70",children:tl.jsx("a",{href:"?link=enter",children:"配置项"})}),tl.jsx("li",{className:A?"text-white/70":"text-white",children:tl.jsx("a",{href:"?link=packages",children:"Packages"})})]})}),tl.jsx("div",{className:"w-full ",style:{height:"calc(100vh - 4rem)"},children:A?tl.jsx(lv,{}):tl.jsx(tv,{})}),tl.jsx(Lm,{})]}):tl.jsx("div",{className:"w-full h-full flex justify-center items-center",children:tl.jsx("div",{className:"w-10 h-10 bg-amber-500 rounded animate-spin"})})};um.createRoot(document.getElementById("root")).render(tl.jsx(av,{}));export{hc as a,Ad as c,tl as j,ev as q,Et as r,Pm as u,yt as y}; diff --git a/src/renderer/assistant-center/root/assistant-base-app/index.html b/src/renderer/assistant-center/root/assistant-base-app/index.html new file mode 100644 index 0000000..9fe98c7 --- /dev/null +++ b/src/renderer/assistant-center/root/assistant-base-app/index.html @@ -0,0 +1,13 @@ + + + + + + Assistant Base App + + + + +
+ + diff --git a/src/renderer/download-services.mjs b/src/renderer/download-services.mjs new file mode 100644 index 0000000..40c01ed --- /dev/null +++ b/src/renderer/download-services.mjs @@ -0,0 +1,6 @@ +const name = 'assistant-center-0.0.1.tgz'; + +const command = `ev micro-app download -i ${name} -o release/assistant-center.tgz -x assistant-center`; + +console.log('command:\n') +console.log(command); diff --git a/src/renderer/index.html b/src/renderer/index.html new file mode 100644 index 0000000..5acdf85 --- /dev/null +++ b/src/renderer/index.html @@ -0,0 +1,21 @@ + + + + + + Config Page + + + +

配置完成后重启

+ + + + + + \ No newline at end of file diff --git a/src/renderer/release/assistant-center.tgz b/src/renderer/release/assistant-center.tgz new file mode 100644 index 0000000..bc3a477 Binary files /dev/null and b/src/renderer/release/assistant-center.tgz differ diff --git a/src/renderer/root/assistant-base-app/assets/Enter-BnWSbQup.js b/src/renderer/root/assistant-base-app/assets/Enter-BnWSbQup.js new file mode 100644 index 0000000..70ebb34 --- /dev/null +++ b/src/renderer/root/assistant-base-app/assets/Enter-BnWSbQup.js @@ -0,0 +1,9 @@ +import{u as h,r as o,j as e}from"./index-OAiiq-Mf.js";const m=()=>{const{config:s,getConfig:l,saveConfig:r}=h();o.useEffect(()=>{c(),l()},[]),o.useEffect(()=>{if(s.pageApi){const a=document.getElementById("pageApi");a.value=s.pageApi}},[s]);const c=()=>{const a=document.getElementById("particles"),p=20;if(a)for(let i=0;i + + + + + + + `;const n=10+Math.random()*20;t.style.width=`${n}px`,t.style.height=`${n}px`,t.style.left=`${Math.random()*100}%`,t.style.top=`${Math.random()*100}%`,t.style.animationDuration=`${5+Math.random()*5}s`,t.style.animationDelay=`${Math.random()*5}s`,a.appendChild(t)}},d=()=>{const a=document.getElementById("pageApi");r(a.value)};return e.jsxs("div",{className:"h-full w-full p-4 pt-10",children:[e.jsx("div",{className:"particles",id:"particles"}),e.jsxs("div",{className:"container",children:[e.jsxs("div",{className:"header",children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}),e.jsx("circle",{cx:"12",cy:"12",r:"3"})]}),e.jsx("h1",{children:"Page Enter Configuration"})]}),e.jsxs("div",{className:"form-container",children:[e.jsxs("form",{id:"configForm",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"pageApi",children:"Page Enter Api"}),e.jsx("input",{type:"text",id:"pageApi",placeholder:"Enter page api configuration"})]}),e.jsxs("button",{type:"submit",id:"save-button",onClick:d,children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),e.jsx("polyline",{points:"17 21 17 13 7 13 7 21"}),e.jsx("polyline",{points:"7 3 7 8 15 8"})]}),"Save Configuration"]})]}),e.jsx("div",{id:"save-result"})]})]})]})};export{m as default}; diff --git a/src/renderer/root/assistant-base-app/assets/Enter-CoE7l2Yc.css b/src/renderer/root/assistant-base-app/assets/Enter-CoE7l2Yc.css new file mode 100644 index 0000000..b3ad898 --- /dev/null +++ b/src/renderer/root/assistant-base-app/assets/Enter-CoE7l2Yc.css @@ -0,0 +1 @@ +*{box-sizing:border-box}body{min-height:100vh;background:linear-gradient(135deg,#fef3c7,#fffbeb);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;position:relative;overflow-x:hidden}.container{max-width:42rem;margin:0 auto}.header{display:flex;align-items:center;gap:.75rem;margin-bottom:2rem}.header svg{width:2rem;height:2rem;color:#d97706;animation:spin 8s linear infinite}.header h1{font-size:1.875rem;font-weight:700;color:#92400e}.form-container{background:#fffc;backdrop-filter:blur(8px);border-radius:1rem;box-shadow:0 4px 6px #d977061a;padding:2rem;transition:all .3s ease}.form-container:hover{box-shadow:0 8px 12px #d9770626}.form-group{margin-bottom:1.5rem}label{display:block;font-size:.875rem;font-weight:500;color:#92400e;margin-bottom:.25rem}input[type=text]{width:100%;padding:.75rem 1rem;border:1px solid #fbbf24;border-radius:.5rem;font-size:1rem;transition:all .2s}input[type=text]:focus{outline:none;border-color:#d97706;box-shadow:0 0 0 3px #d9770633}button{width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem;background-color:#d97706;color:#fff;padding:.75rem 1.5rem;border:none;border-radius:.5rem;font-size:1rem;font-weight:500;cursor:pointer;transition:background-color .2s}button:hover{background-color:#b45309}.particles{position:absolute;inset:0;pointer-events:none;overflow:hidden}.particle{position:absolute;color:#fbbf24;opacity:.3;animation:float 5s ease-in-out infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-20px) rotate(10deg)}} diff --git a/src/renderer/root/assistant-base-app/assets/index-B3OKg3E6.js b/src/renderer/root/assistant-base-app/assets/index-B3OKg3E6.js new file mode 100644 index 0000000..74dd6ed --- /dev/null +++ b/src/renderer/root/assistant-base-app/assets/index-B3OKg3E6.js @@ -0,0 +1,31 @@ +import{c as v,y as d,a as f,q as N,r as u,u as C,j as n}from"./index-OAiiq-Mf.js";const $=v((t,i)=>({installedPackages:[],shopPackages:[],setInstalledPackages:s=>t({installedPackages:s}),setShopPackages:s=>t({shopPackages:s}),getInstalledPackages:async()=>{const s=await f.post({path:"shop",key:"list-installed"});return s.code===200&&t({installedPackages:s.data}),s.data},getShopPackages:async()=>{const s=await N.post({path:"app",key:"public-list"});return s.code===200&&t({shopPackages:s.data}),s.data},uninstallPackage:async s=>{const c=await f.post({path:"shop",key:"uninstall",data:{pkg:s}});c.code===200?(i().getInstalledPackages(),d.success("Package uninstalled successfully")):d.error(c.message||"Failed to uninstall package"),console.log("uninstallPackage",c)},installPackage:async s=>{const c=d.loading("Installing package..."),o=await f.post({path:"shop",key:"install",data:{pkg:s}});d.dismiss(c),o.code===200?(i().getInstalledPackages(),d.success("Package installed successfully")):d.error(o.message||"Failed to install package"),console.log("installPackage",o)}}));/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),x=(...t)=>t.filter((i,s,c)=>!!i&&i.trim()!==""&&c.indexOf(i)===s).join(" ").trim();/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var A={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U=u.forwardRef(({color:t="currentColor",size:i=24,strokeWidth:s=2,absoluteStrokeWidth:c,className:o="",children:r,iconNode:h,...p},k)=>u.createElement("svg",{ref:k,...A,width:i,height:i,stroke:t,strokeWidth:c?Number(s)*24/Number(i):s,className:x("lucide",o),...p},[...h.map(([g,m])=>u.createElement(g,m)),...Array.isArray(r)?r:[r]]));/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b=(t,i)=>{const s=u.forwardRef(({className:c,...o},r)=>u.createElement(U,{ref:r,iconNode:i,className:x(`lucide-${I(t)}`,c),...o}));return s.displayName=`${t}`,s};/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S=[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]],q=b("Link2",S);/** + * @license lucide-react v0.479.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R=[["path",{d:"M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6",key:"y09zxi"}],["path",{d:"m21 3-9 9",key:"mpx6sq"}],["path",{d:"M15 3h6v6",key:"1q9fwt"}]],E=b("SquareArrowOutUpRight",R),M=()=>{const{shopPackages:t,installedPackages:i,getInstalledPackages:s,getShopPackages:c,uninstallPackage:o,installPackage:r}=$(),{pageApi:h}=C();u.useEffect(()=>{s(),c()},[]);const p=e=>{const a=i.find(l=>l.user===e.user&&l.key===e.key);return a?a.version!==e.version?"update-available":"installed":"not-installed"},k=e=>{const a=t.find(l=>l.id===e);a&&r(a)},g=e=>{const a=t.find(l=>l.id===e);a&&r(a)},m=e=>{const a=t.find(l=>l.id===e);a&&r(a)},y=e=>{const a=t.find(l=>l.id===e);a&&o(a)},P=(e,a)=>{switch(e){case"not-installed":return n.jsx("button",{className:"button button-install",onClick:()=>k(a.id),children:"Install"});case"update-available":return n.jsx("button",{className:"button button-update",onClick:()=>g(a.id),children:"Update"});case"installed":return n.jsx("button",{className:"button button-reinstall",onClick:()=>m(a.id),children:"Reinstall"})}},w=e=>{const a="https://kevisual.silkyai.cn",l=`/${e.user}/${e.key}`;window.open(`${a}${l}`,"_blank")},j=e=>{if(!h)return;const a=h,l=`/${e.user}/${e.key}`;window.open(`${a}${l}`,"_blank")};return n.jsxs("div",{id:"app",children:[n.jsx("h1",{children:"Package Manager"}),n.jsx("div",{className:"package-list",children:t.map(e=>{const a=p(e),l=a!=="not-installed";return n.jsxs("div",{className:"package-card",children:[n.jsx("h2",{children:e.title}),n.jsx("p",{className:"description",children:e.description}),n.jsxs("div",{className:"package-info",children:[n.jsxs("span",{children:["Version: ",e.version]}),n.jsxs("span",{children:["User: ",e.user]})]}),n.jsxs("div",{className:"actions",children:[P(a,e),a!=="not-installed"&&n.jsx("button",{className:"button button-uninstall",onClick:()=>y(e.id),children:"Uninstall"}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx("div",{className:"cursor-pointer p-2 rounded-md bg-amber-500 text-white",children:n.jsx(E,{onClick:()=>w(e)})}),h&&l&&n.jsx("div",{className:"cursor-pointer p-2 rounded-md bg-amber-500 text-white",children:n.jsx(q,{onClick:()=>j(e)})})]})]})]},e.id)})})]})};export{M as PackageManager,M as default}; diff --git a/src/renderer/root/assistant-base-app/assets/index-BQID9xYq.css b/src/renderer/root/assistant-base-app/assets/index-BQID9xYq.css new file mode 100644 index 0000000..db4fbc8 --- /dev/null +++ b/src/renderer/root/assistant-base-app/assets/index-BQID9xYq.css @@ -0,0 +1 @@ +:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;background-color:#fff8e1;color:#213547}body{margin:0;min-width:320px;min-height:100vh}#app{max-width:1280px;margin:0 auto;padding:2rem}h1{text-align:center;color:#ff8f00}.package-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem}.package-card{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 4px #ff8f001a;border:1px solid #ffe0b2}.package-card h2{margin:0 0 .5rem;color:#f57c00}.package-card .description{color:#666;margin-bottom:1rem;font-size:.9rem;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;line-height:1.5;max-height:6em}.package-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;font-size:.9rem;color:#666}.actions{display:flex;gap:.5rem}.button{padding:.5rem 1rem;border-radius:4px;border:none;cursor:pointer;font-weight:500;transition:background-color .2s}.button-install{background-color:#ffa000;color:#fff}.button-update{background-color:#ff8f00;color:#fff}.button-reinstall{background-color:#ffb300;color:#fff}.button-uninstall{background-color:#ff6f00;color:#fff}.button:hover{opacity:.9}.button:disabled{background-color:#ffe0b2;cursor:not-allowed}.error-message{text-align:center;color:#ff6f00;padding:2rem;background:#fff;border-radius:8px;box-shadow:0 2px 4px #ff8f001a;grid-column:1 / -1} diff --git a/src/renderer/root/assistant-base-app/assets/index-CyYNi-ro.css b/src/renderer/root/assistant-base-app/assets/index-CyYNi-ro.css new file mode 100644 index 0000000..90427ab --- /dev/null +++ b/src/renderer/root/assistant-base-app/assets/index-CyYNi-ro.css @@ -0,0 +1 @@ +/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-amber-500:oklch(.769 .188 70.08);--color-gray-300:oklch(.872 .01 258.338);--color-white:#fff;--spacing:.25rem;--radius-md:.375rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(--font-sans--font-variation-settings);--default-mono-font-family:var(--font-mono);--default-mono-font-feature-settings:var(--font-mono--font-feature-settings);--default-mono-font-variation-settings:var(--font-mono--font-variation-settings)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{.test-loading{height:calc(var(--spacing)*20);width:calc(var(--spacing)*20);animation:var(--animate-spin);background-color:var(--color-gray-300);border-radius:3.40282e38px}}@layer utilities{.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-0{top:calc(var(--spacing)*0)}.z-10{z-index:10}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.hidden{display:none}.h-10{height:calc(var(--spacing)*10)}.h-full{height:100%}.w-10{width:calc(var(--spacing)*10)}.w-full{width:100%}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-amber-500{background-color:var(--color-amber-500)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.pt-10{padding-top:calc(var(--spacing)*10)}.text-white{color:var(--color-white)}.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}}html,body{width:100%;height:100%;margin:0;padding:0;overflow:hidden}#root{width:100%;height:100%;overflow:auto}#root::-webkit-scrollbar{width:1px}#root::-webkit-scrollbar-thumb{background-color:#00000080;border-radius:10px}#root::-webkit-scrollbar-track{background:0 0}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/src/renderer/root/assistant-base-app/assets/index-OAiiq-Mf.js b/src/renderer/root/assistant-base-app/assets/index-OAiiq-Mf.js new file mode 100644 index 0000000..2273ab7 --- /dev/null +++ b/src/renderer/root/assistant-base-app/assets/index-OAiiq-Mf.js @@ -0,0 +1,51 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-B3OKg3E6.js","assets/index-BQID9xYq.css","assets/Enter-BnWSbQup.js","assets/Enter-CoE7l2Yc.css"])))=>i.map(i=>d[i]); +(function(){const o=document.createElement("link").relList;if(o&&o.supports&&o.supports("modulepreload"))return;for(const E of document.querySelectorAll('link[rel="modulepreload"]'))r(E);new MutationObserver(E=>{for(const D of E)if(D.type==="childList")for(const A of D.addedNodes)A.tagName==="LINK"&&A.rel==="modulepreload"&&r(A)}).observe(document,{childList:!0,subtree:!0});function v(E){const D={};return E.integrity&&(D.integrity=E.integrity),E.referrerPolicy&&(D.referrerPolicy=E.referrerPolicy),E.crossOrigin==="use-credentials"?D.credentials="include":E.crossOrigin==="anonymous"?D.credentials="omit":D.credentials="same-origin",D}function r(E){if(E.ep)return;E.ep=!0;const D=v(E);fetch(E.href,D)}})();function ky(c){return c&&c.__esModule&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c}var ic={exports:{}},Du={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ad;function $y(){if(ad)return Du;ad=1;var c=Symbol.for("react.transitional.element"),o=Symbol.for("react.fragment");function v(r,E,D){var A=null;if(D!==void 0&&(A=""+D),E.key!==void 0&&(A=""+E.key),"key"in E){D={};for(var H in E)H!=="key"&&(D[H]=E[H])}else D=E;return E=D.ref,{$$typeof:c,type:r,key:A,ref:E!==void 0?E:null,props:D}}return Du.Fragment=o,Du.jsx=v,Du.jsxs=v,Du}var ed;function Wy(){return ed||(ed=1,ic.exports=$y()),ic.exports}var tl=Wy(),fc={exports:{}},Mu={},cc={exports:{}},sc={};/** + * @license React + * scheduler.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ud;function Fy(){return ud||(ud=1,function(c){function o(U,w){var G=U.length;U.push(w);t:for(;0>>1,d=U[pt];if(0>>1;ptE(Z,G))NE(ct,Z)?(U[pt]=ct,U[N]=G,pt=N):(U[pt]=Z,U[K]=G,pt=K);else if(NE(ct,G))U[pt]=ct,U[N]=G,pt=N;else break t}}return w}function E(U,w){var G=U.sortIndex-w.sortIndex;return G!==0?G:U.id-w.id}if(c.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var D=performance;c.unstable_now=function(){return D.now()}}else{var A=Date,H=A.now();c.unstable_now=function(){return A.now()-H}}var T=[],b=[],R=1,C=null,Q=3,J=!1,dt=!1,et=!1,W=typeof setTimeout=="function"?setTimeout:null,P=typeof clearTimeout=="function"?clearTimeout:null,x=typeof setImmediate<"u"?setImmediate:null;function X(U){for(var w=v(b);w!==null;){if(w.callback===null)r(b);else if(w.startTime<=U)r(b),w.sortIndex=w.expirationTime,o(T,w);else break;w=v(b)}}function $(U){if(et=!1,X(U),!dt)if(v(T)!==null)dt=!0,zl();else{var w=v(b);w!==null&&Zt($,w.startTime-U)}}var L=!1,vt=-1,tt=5,it=-1;function B(){return!(c.unstable_now()-itU&&B());){var pt=C.callback;if(typeof pt=="function"){C.callback=null,Q=C.priorityLevel;var d=pt(C.expirationTime<=U);if(U=c.unstable_now(),typeof d=="function"){C.callback=d,X(U),w=!0;break l}C===v(T)&&r(T),X(U)}else r(T);C=v(T)}if(C!==null)w=!0;else{var M=v(b);M!==null&&Zt($,M.startTime-U),w=!1}}break t}finally{C=null,Q=G,J=!1}w=void 0}}finally{w?Dt():L=!1}}}var Dt;if(typeof x=="function")Dt=function(){x(I)};else if(typeof MessageChannel<"u"){var Lt=new MessageChannel,Wt=Lt.port2;Lt.port1.onmessage=I,Dt=function(){Wt.postMessage(null)}}else Dt=function(){W(I,0)};function zl(){L||(L=!0,Dt())}function Zt(U,w){vt=W(function(){U(c.unstable_now())},w)}c.unstable_IdlePriority=5,c.unstable_ImmediatePriority=1,c.unstable_LowPriority=4,c.unstable_NormalPriority=3,c.unstable_Profiling=null,c.unstable_UserBlockingPriority=2,c.unstable_cancelCallback=function(U){U.callback=null},c.unstable_continueExecution=function(){dt||J||(dt=!0,zl())},c.unstable_forceFrameRate=function(U){0>U||125pt?(U.sortIndex=G,o(b,U),v(T)===null&&U===v(b)&&(et?(P(vt),vt=-1):et=!0,Zt($,G-pt))):(U.sortIndex=d,o(T,U),dt||J||(dt=!0,zl())),U},c.unstable_shouldYield=B,c.unstable_wrapCallback=function(U){var w=Q;return function(){var G=Q;Q=w;try{return U.apply(this,arguments)}finally{Q=G}}}}(sc)),sc}var nd;function Iy(){return nd||(nd=1,cc.exports=Fy()),cc.exports}var oc={exports:{}},F={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var id;function Py(){if(id)return F;id=1;var c=Symbol.for("react.transitional.element"),o=Symbol.for("react.portal"),v=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),E=Symbol.for("react.profiler"),D=Symbol.for("react.consumer"),A=Symbol.for("react.context"),H=Symbol.for("react.forward_ref"),T=Symbol.for("react.suspense"),b=Symbol.for("react.memo"),R=Symbol.for("react.lazy"),C=Symbol.iterator;function Q(d){return d===null||typeof d!="object"?null:(d=C&&d[C]||d["@@iterator"],typeof d=="function"?d:null)}var J={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},dt=Object.assign,et={};function W(d,M,K){this.props=d,this.context=M,this.refs=et,this.updater=K||J}W.prototype.isReactComponent={},W.prototype.setState=function(d,M){if(typeof d!="object"&&typeof d!="function"&&d!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,d,M,"setState")},W.prototype.forceUpdate=function(d){this.updater.enqueueForceUpdate(this,d,"forceUpdate")};function P(){}P.prototype=W.prototype;function x(d,M,K){this.props=d,this.context=M,this.refs=et,this.updater=K||J}var X=x.prototype=new P;X.constructor=x,dt(X,W.prototype),X.isPureReactComponent=!0;var $=Array.isArray,L={H:null,A:null,T:null,S:null},vt=Object.prototype.hasOwnProperty;function tt(d,M,K,Z,N,ct){return K=ct.ref,{$$typeof:c,type:d,key:M,ref:K!==void 0?K:null,props:ct}}function it(d,M){return tt(d.type,M,void 0,void 0,void 0,d.props)}function B(d){return typeof d=="object"&&d!==null&&d.$$typeof===c}function I(d){var M={"=":"=0",":":"=2"};return"$"+d.replace(/[=:]/g,function(K){return M[K]})}var Dt=/\/+/g;function Lt(d,M){return typeof d=="object"&&d!==null&&d.key!=null?I(""+d.key):M.toString(36)}function Wt(){}function zl(d){switch(d.status){case"fulfilled":return d.value;case"rejected":throw d.reason;default:switch(typeof d.status=="string"?d.then(Wt,Wt):(d.status="pending",d.then(function(M){d.status==="pending"&&(d.status="fulfilled",d.value=M)},function(M){d.status==="pending"&&(d.status="rejected",d.reason=M)})),d.status){case"fulfilled":return d.value;case"rejected":throw d.reason}}throw d}function Zt(d,M,K,Z,N){var ct=typeof d;(ct==="undefined"||ct==="boolean")&&(d=null);var lt=!1;if(d===null)lt=!0;else switch(ct){case"bigint":case"string":case"number":lt=!0;break;case"object":switch(d.$$typeof){case c:case o:lt=!0;break;case R:return lt=d._init,Zt(lt(d._payload),M,K,Z,N)}}if(lt)return N=N(d),lt=Z===""?"."+Lt(d,0):Z,$(N)?(K="",lt!=null&&(K=lt.replace(Dt,"$&/")+"/"),Zt(N,M,K,"",function(Nt){return Nt})):N!=null&&(B(N)&&(N=it(N,K+(N.key==null||d&&d.key===N.key?"":(""+N.key).replace(Dt,"$&/")+"/")+lt)),M.push(N)),1;lt=0;var Ft=Z===""?".":Z+":";if($(d))for(var mt=0;mt"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(c)}catch(o){console.error(o)}}return c(),rc.exports=tm(),rc.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var od;function am(){if(od)return Mu;od=1;var c=Iy(),o=gc(),v=lm();function r(t){var l="https://react.dev/errors/"+t;if(1)":-1u||s[e]!==m[u]){var S=` +`+s[e].replace(" at new "," at ");return t.displayName&&S.includes("")&&(S=S.replace("",t.displayName)),S}while(1<=e&&0<=u);break}}}finally{zl=!1,Error.prepareStackTrace=a}return(a=t?t.displayName||t.name:"")?Wt(a):""}function U(t){switch(t.tag){case 26:case 27:case 5:return Wt(t.type);case 16:return Wt("Lazy");case 13:return Wt("Suspense");case 19:return Wt("SuspenseList");case 0:case 15:return t=Zt(t.type,!1),t;case 11:return t=Zt(t.type.render,!1),t;case 1:return t=Zt(t.type,!0),t;default:return""}}function w(t){try{var l="";do l+=U(t),t=t.return;while(t);return l}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}function G(t){var l=t,a=t;if(t.alternate)for(;l.return;)l=l.return;else{t=l;do l=t,(l.flags&4098)!==0&&(a=l.return),t=l.return;while(t)}return l.tag===3?a:null}function pt(t){if(t.tag===13){var l=t.memoizedState;if(l===null&&(t=t.alternate,t!==null&&(l=t.memoizedState)),l!==null)return l.dehydrated}return null}function d(t){if(G(t)!==t)throw Error(r(188))}function M(t){var l=t.alternate;if(!l){if(l=G(t),l===null)throw Error(r(188));return l!==t?null:t}for(var a=t,e=l;;){var u=a.return;if(u===null)break;var n=u.alternate;if(n===null){if(e=u.return,e!==null){a=e;continue}break}if(u.child===n.child){for(n=u.child;n;){if(n===a)return d(u),t;if(n===e)return d(u),l;n=n.sibling}throw Error(r(188))}if(a.return!==e.return)a=u,e=n;else{for(var i=!1,f=u.child;f;){if(f===a){i=!0,a=u,e=n;break}if(f===e){i=!0,e=u,a=n;break}f=f.sibling}if(!i){for(f=n.child;f;){if(f===a){i=!0,a=n,e=u;break}if(f===e){i=!0,e=n,a=u;break}f=f.sibling}if(!i)throw Error(r(189))}}if(a.alternate!==e)throw Error(r(190))}if(a.tag!==3)throw Error(r(188));return a.stateNode.current===a?t:l}function K(t){var l=t.tag;if(l===5||l===26||l===27||l===6)return t;for(t=t.child;t!==null;){if(l=K(t),l!==null)return l;t=t.sibling}return null}var Z=Array.isArray,N=v.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ct={pending:!1,data:null,method:null,action:null},lt=[],Ft=-1;function mt(t){return{current:t}}function Nt(t){0>Ft||(t.current=lt[Ft],lt[Ft]=null,Ft--)}function zt(t,l){Ft++,lt[Ft]=t.current,t.current=l}var Rl=mt(null),Ue=mt(null),ta=mt(null),Nu=mt(null);function xu(t,l){switch(zt(ta,l),zt(Ue,t),zt(Rl,null),t=l.nodeType,t){case 9:case 11:l=(l=l.documentElement)&&(l=l.namespaceURI)?Hr(l):0;break;default:if(t=t===8?l.parentNode:l,l=t.tagName,t=t.namespaceURI)t=Hr(t),l=Nr(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}Nt(Rl),zt(Rl,l)}function ka(){Nt(Rl),Nt(Ue),Nt(ta)}function Wn(t){t.memoizedState!==null&&zt(Nu,t);var l=Rl.current,a=Nr(l,t.type);l!==a&&(zt(Ue,t),zt(Rl,a))}function qu(t){Ue.current===t&&(Nt(Rl),Nt(Ue)),Nu.current===t&&(Nt(Nu),Tu._currentValue=ct)}var Fn=Object.prototype.hasOwnProperty,In=c.unstable_scheduleCallback,Pn=c.unstable_cancelCallback,Od=c.unstable_shouldYield,Dd=c.unstable_requestPaint,Ul=c.unstable_now,Md=c.unstable_getCurrentPriorityLevel,_c=c.unstable_ImmediatePriority,pc=c.unstable_UserBlockingPriority,Cu=c.unstable_NormalPriority,Rd=c.unstable_LowPriority,Sc=c.unstable_IdlePriority,Ud=c.log,Hd=c.unstable_setDisableYieldValue,He=null,nl=null;function Nd(t){if(nl&&typeof nl.onCommitFiberRoot=="function")try{nl.onCommitFiberRoot(He,t,void 0,(t.current.flags&128)===128)}catch{}}function la(t){if(typeof Ud=="function"&&Hd(t),nl&&typeof nl.setStrictMode=="function")try{nl.setStrictMode(He,t)}catch{}}var il=Math.clz32?Math.clz32:Cd,xd=Math.log,qd=Math.LN2;function Cd(t){return t>>>=0,t===0?32:31-(xd(t)/qd|0)|0}var Bu=128,Yu=4194304;function za(t){var l=t&42;if(l!==0)return l;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Xu(t,l){var a=t.pendingLanes;if(a===0)return 0;var e=0,u=t.suspendedLanes,n=t.pingedLanes,i=t.warmLanes;t=t.finishedLanes!==0;var f=a&134217727;return f!==0?(a=f&~u,a!==0?e=za(a):(n&=f,n!==0?e=za(n):t||(i=f&~i,i!==0&&(e=za(i))))):(f=a&~u,f!==0?e=za(f):n!==0?e=za(n):t||(i=a&~i,i!==0&&(e=za(i)))),e===0?0:l!==0&&l!==e&&(l&u)===0&&(u=e&-e,i=l&-l,u>=i||u===32&&(i&4194176)!==0)?l:e}function Ne(t,l){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&l)===0}function Bd(t,l){switch(t){case 1:case 2:case 4:case 8:return l+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Tc(){var t=Bu;return Bu<<=1,(Bu&4194176)===0&&(Bu=128),t}function Ec(){var t=Yu;return Yu<<=1,(Yu&62914560)===0&&(Yu=4194304),t}function ti(t){for(var l=[],a=0;31>a;a++)l.push(t);return l}function xe(t,l){t.pendingLanes|=l,l!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Yd(t,l,a,e,u,n){var i=t.pendingLanes;t.pendingLanes=a,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=a,t.entangledLanes&=a,t.errorRecoveryDisabledLanes&=a,t.shellSuspendCounter=0;var f=t.entanglements,s=t.expirationTimes,m=t.hiddenUpdates;for(a=i&~a;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Qd=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Hc={},Nc={};function Ld(t){return Fn.call(Nc,t)?!0:Fn.call(Hc,t)?!1:Qd.test(t)?Nc[t]=!0:(Hc[t]=!0,!1)}function ju(t,l,a){if(Ld(l))if(a===null)t.removeAttribute(l);else{switch(typeof a){case"undefined":case"function":case"symbol":t.removeAttribute(l);return;case"boolean":var e=l.toLowerCase().slice(0,5);if(e!=="data-"&&e!=="aria-"){t.removeAttribute(l);return}}t.setAttribute(l,""+a)}}function Gu(t,l,a){if(a===null)t.removeAttribute(l);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(l);return}t.setAttribute(l,""+a)}}function Yl(t,l,a,e){if(e===null)t.removeAttribute(a);else{switch(typeof e){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(a);return}t.setAttributeNS(l,a,""+e)}}function dl(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function xc(t){var l=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(l==="checkbox"||l==="radio")}function Zd(t){var l=xc(t)?"checked":"value",a=Object.getOwnPropertyDescriptor(t.constructor.prototype,l),e=""+t[l];if(!t.hasOwnProperty(l)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var u=a.get,n=a.set;return Object.defineProperty(t,l,{configurable:!0,get:function(){return u.call(this)},set:function(i){e=""+i,n.call(this,i)}}),Object.defineProperty(t,l,{enumerable:a.enumerable}),{getValue:function(){return e},setValue:function(i){e=""+i},stopTracking:function(){t._valueTracker=null,delete t[l]}}}}function Qu(t){t._valueTracker||(t._valueTracker=Zd(t))}function qc(t){if(!t)return!1;var l=t._valueTracker;if(!l)return!0;var a=l.getValue(),e="";return t&&(e=xc(t)?t.checked?"true":"false":t.value),t=e,t!==a?(l.setValue(t),!0):!1}function Lu(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Vd=/[\n"\\]/g;function yl(t){return t.replace(Vd,function(l){return"\\"+l.charCodeAt(0).toString(16)+" "})}function ei(t,l,a,e,u,n,i,f){t.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?t.type=i:t.removeAttribute("type"),l!=null?i==="number"?(l===0&&t.value===""||t.value!=l)&&(t.value=""+dl(l)):t.value!==""+dl(l)&&(t.value=""+dl(l)):i!=="submit"&&i!=="reset"||t.removeAttribute("value"),l!=null?ui(t,i,dl(l)):a!=null?ui(t,i,dl(a)):e!=null&&t.removeAttribute("value"),u==null&&n!=null&&(t.defaultChecked=!!n),u!=null&&(t.checked=u&&typeof u!="function"&&typeof u!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?t.name=""+dl(f):t.removeAttribute("name")}function Cc(t,l,a,e,u,n,i,f){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(t.type=n),l!=null||a!=null){if(!(n!=="submit"&&n!=="reset"||l!=null))return;a=a!=null?""+dl(a):"",l=l!=null?""+dl(l):a,f||l===t.value||(t.value=l),t.defaultValue=l}e=e??u,e=typeof e!="function"&&typeof e!="symbol"&&!!e,t.checked=f?t.checked:!!e,t.defaultChecked=!!e,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(t.name=i)}function ui(t,l,a){l==="number"&&Lu(t.ownerDocument)===t||t.defaultValue===""+a||(t.defaultValue=""+a)}function Pa(t,l,a,e){if(t=t.options,l){l={};for(var u=0;u=Ge),kc=" ",$c=!1;function Wc(t,l){switch(t){case"keyup":return b0.indexOf(l.keyCode)!==-1;case"keydown":return l.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fc(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var ee=!1;function p0(t,l){switch(t){case"compositionend":return Fc(l);case"keypress":return l.which!==32?null:($c=!0,kc);case"textInput":return t=l.data,t===kc&&$c?null:t;default:return null}}function S0(t,l){if(ee)return t==="compositionend"||!vi&&Wc(t,l)?(t=Lc(),Vu=oi=ea=null,ee=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(l.ctrlKey||l.altKey||l.metaKey)||l.ctrlKey&&l.altKey){if(l.char&&1=l)return{node:a,offset:l-t};t=e}t:{for(;a;){if(a.nextSibling){a=a.nextSibling;break t}a=a.parentNode}a=void 0}a=ns(a)}}function fs(t,l){return t&&l?t===l?!0:t&&t.nodeType===3?!1:l&&l.nodeType===3?fs(t,l.parentNode):"contains"in t?t.contains(l):t.compareDocumentPosition?!!(t.compareDocumentPosition(l)&16):!1:!1}function cs(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var l=Lu(t.document);l instanceof t.HTMLIFrameElement;){try{var a=typeof l.contentWindow.location.href=="string"}catch{a=!1}if(a)t=l.contentWindow;else break;l=Lu(t.document)}return l}function bi(t){var l=t&&t.nodeName&&t.nodeName.toLowerCase();return l&&(l==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||l==="textarea"||t.contentEditable==="true")}function R0(t,l){var a=cs(l);l=t.focusedElem;var e=t.selectionRange;if(a!==l&&l&&l.ownerDocument&&fs(l.ownerDocument.documentElement,l)){if(e!==null&&bi(l)){if(t=e.start,a=e.end,a===void 0&&(a=t),"selectionStart"in l)l.selectionStart=t,l.selectionEnd=Math.min(a,l.value.length);else if(a=(t=l.ownerDocument||document)&&t.defaultView||window,a.getSelection){a=a.getSelection();var u=l.textContent.length,n=Math.min(e.start,u);e=e.end===void 0?n:Math.min(e.end,u),!a.extend&&n>e&&(u=e,e=n,n=u),u=is(l,n);var i=is(l,e);u&&i&&(a.rangeCount!==1||a.anchorNode!==u.node||a.anchorOffset!==u.offset||a.focusNode!==i.node||a.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(u.node,u.offset),a.removeAllRanges(),n>e?(a.addRange(t),a.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),a.addRange(t)))}}for(t=[],a=l;a=a.parentNode;)a.nodeType===1&&t.push({element:a,left:a.scrollLeft,top:a.scrollTop});for(typeof l.focus=="function"&&l.focus(),l=0;l=document.documentMode,ue=null,_i=null,Ve=null,pi=!1;function ss(t,l,a){var e=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;pi||ue==null||ue!==Lu(e)||(e=ue,"selectionStart"in e&&bi(e)?e={start:e.selectionStart,end:e.selectionEnd}:(e=(e.ownerDocument&&e.ownerDocument.defaultView||window).getSelection(),e={anchorNode:e.anchorNode,anchorOffset:e.anchorOffset,focusNode:e.focusNode,focusOffset:e.focusOffset}),Ve&&Ze(Ve,e)||(Ve=e,e=Nn(_i,"onSelect"),0>=i,u-=i,Xl=1<<32-il(l)+u|a<V?(Qt=j,j=null):Qt=j.sibling;var rt=_(h,j,g[V],z);if(rt===null){j===null&&(j=Qt);break}t&&j&&rt.alternate===null&&l(h,j),y=n(rt,y,V),ut===null?q=rt:ut.sibling=rt,ut=rt,j=Qt}if(V===g.length)return a(h,j),ot&&Ha(h,V),q;if(j===null){for(;VV?(Qt=j,j=null):Qt=j.sibling;var Ea=_(h,j,rt.value,z);if(Ea===null){j===null&&(j=Qt);break}t&&j&&Ea.alternate===null&&l(h,j),y=n(Ea,y,V),ut===null?q=Ea:ut.sibling=Ea,ut=Ea,j=Qt}if(rt.done)return a(h,j),ot&&Ha(h,V),q;if(j===null){for(;!rt.done;V++,rt=g.next())rt=O(h,rt.value,z),rt!==null&&(y=n(rt,y,V),ut===null?q=rt:ut.sibling=rt,ut=rt);return ot&&Ha(h,V),q}for(j=e(j);!rt.done;V++,rt=g.next())rt=p(j,h,V,rt.value,z),rt!==null&&(t&&rt.alternate!==null&&j.delete(rt.key===null?V:rt.key),y=n(rt,y,V),ut===null?q=rt:ut.sibling=rt,ut=rt);return t&&j.forEach(function(Jy){return l(h,Jy)}),ot&&Ha(h,V),q}function Ut(h,y,g,z){if(typeof g=="object"&&g!==null&&g.type===T&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case A:t:{for(var q=g.key;y!==null;){if(y.key===q){if(q=g.type,q===T){if(y.tag===7){a(h,y.sibling),z=u(y,g.props.children),z.return=h,h=z;break t}}else if(y.elementType===q||typeof q=="object"&&q!==null&&q.$$typeof===x&&Os(q)===y.type){a(h,y.sibling),z=u(y,g.props),Fe(z,g),z.return=h,h=z;break t}a(h,y);break}else l(h,y);y=y.sibling}g.type===T?(z=La(g.props.children,h.mode,z,g.key),z.return=h,h=z):(z=Tn(g.type,g.key,g.props,null,h.mode,z),Fe(z,g),z.return=h,h=z)}return i(h);case H:t:{for(q=g.key;y!==null;){if(y.key===q)if(y.tag===4&&y.stateNode.containerInfo===g.containerInfo&&y.stateNode.implementation===g.implementation){a(h,y.sibling),z=u(y,g.children||[]),z.return=h,h=z;break t}else{a(h,y);break}else l(h,y);y=y.sibling}z=Ef(g,h.mode,z),z.return=h,h=z}return i(h);case x:return q=g._init,g=q(g._payload),Ut(h,y,g,z)}if(Z(g))return Y(h,y,g,z);if(vt(g)){if(q=vt(g),typeof q!="function")throw Error(r(150));return g=q.call(g),k(h,y,g,z)}if(typeof g.then=="function")return Ut(h,y,an(g),z);if(g.$$typeof===J)return Ut(h,y,_n(h,g),z);en(h,g)}return typeof g=="string"&&g!==""||typeof g=="number"||typeof g=="bigint"?(g=""+g,y!==null&&y.tag===6?(a(h,y.sibling),z=u(y,g),z.return=h,h=z):(a(h,y),z=Tf(g,h.mode,z),z.return=h,h=z),i(h)):a(h,y)}return function(h,y,g,z){try{We=0;var q=Ut(h,y,g,z);return oe=null,q}catch(j){if(j===ke)throw j;var ut=Sl(29,j,null,h.mode);return ut.lanes=z,ut.return=h,ut}finally{}}}var xa=Ds(!0),Ms=Ds(!1),re=mt(null),un=mt(0);function Rs(t,l){t=Wl,zt(un,t),zt(re,l),Wl=t|l.baseLanes}function Mi(){zt(un,Wl),zt(re,re.current)}function Ri(){Wl=un.current,Nt(re),Nt(un)}var bl=mt(null),Nl=null;function na(t){var l=t.alternate;zt(Bt,Bt.current&1),zt(bl,t),Nl===null&&(l===null||re.current!==null||l.memoizedState!==null)&&(Nl=t)}function Us(t){if(t.tag===22){if(zt(Bt,Bt.current),zt(bl,t),Nl===null){var l=t.alternate;l!==null&&l.memoizedState!==null&&(Nl=t)}}else ia()}function ia(){zt(Bt,Bt.current),zt(bl,bl.current)}function Gl(t){Nt(bl),Nl===t&&(Nl=null),Nt(Bt)}var Bt=mt(0);function nn(t){for(var l=t;l!==null;){if(l.tag===13){var a=l.memoizedState;if(a!==null&&(a=a.dehydrated,a===null||a.data==="$?"||a.data==="$!"))return l}else if(l.tag===19&&l.memoizedProps.revealOrder!==void 0){if((l.flags&128)!==0)return l}else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===t)break;for(;l.sibling===null;){if(l.return===null||l.return===t)return null;l=l.return}l.sibling.return=l.return,l=l.sibling}return null}var q0=typeof AbortController<"u"?AbortController:function(){var t=[],l=this.signal={aborted:!1,addEventListener:function(a,e){t.push(e)}};this.abort=function(){l.aborted=!0,t.forEach(function(a){return a()})}},C0=c.unstable_scheduleCallback,B0=c.unstable_NormalPriority,Yt={$$typeof:J,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Ui(){return{controller:new q0,data:new Map,refCount:0}}function Ie(t){t.refCount--,t.refCount===0&&C0(B0,function(){t.controller.abort()})}var Pe=null,Hi=0,de=0,ye=null;function Y0(t,l){if(Pe===null){var a=Pe=[];Hi=0,de=Xf(),ye={status:"pending",value:void 0,then:function(e){a.push(e)}}}return Hi++,l.then(Hs,Hs),l}function Hs(){if(--Hi===0&&Pe!==null){ye!==null&&(ye.status="fulfilled");var t=Pe;Pe=null,de=0,ye=null;for(var l=0;ln?n:8;var i=B.T,f={};B.T=f,ki(t,!1,l,a);try{var s=u(),m=B.S;if(m!==null&&m(f,s),s!==null&&typeof s=="object"&&typeof s.then=="function"){var S=X0(s,e);au(t,l,S,rl(t))}else au(t,l,e,rl(t))}catch(O){au(t,l,{then:function(){},status:"rejected",reason:O},rl())}finally{N.p=n,B.T=i}}function Z0(){}function wi(t,l,a,e){if(t.tag!==5)throw Error(r(476));var u=co(t).queue;fo(t,u,l,ct,a===null?Z0:function(){return so(t),a(e)})}function co(t){var l=t.memoizedState;if(l!==null)return l;l={memoizedState:ct,baseState:ct,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ql,lastRenderedState:ct},next:null};var a={};return l.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ql,lastRenderedState:a},next:null},t.memoizedState=l,t=t.alternate,t!==null&&(t.memoizedState=l),l}function so(t){var l=co(t).next.queue;au(t,l,{},rl())}function Ji(){return kt(Tu)}function oo(){return qt().memoizedState}function ro(){return qt().memoizedState}function V0(t){for(var l=t.return;l!==null;){switch(l.tag){case 24:case 3:var a=rl();t=ra(a);var e=da(l,t,a);e!==null&&(Pt(e,l,a),nu(e,l,a)),l={cache:Ui()},t.payload=l;return}l=l.return}}function K0(t,l,a){var e=rl();a={lane:e,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null},vn(t)?mo(l,a):(a=Ei(t,l,a,e),a!==null&&(Pt(a,t,e),vo(a,l,e)))}function yo(t,l,a){var e=rl();au(t,l,a,e)}function au(t,l,a,e){var u={lane:e,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null};if(vn(t))mo(l,u);else{var n=t.alternate;if(t.lanes===0&&(n===null||n.lanes===0)&&(n=l.lastRenderedReducer,n!==null))try{var i=l.lastRenderedState,f=n(i,a);if(u.hasEagerState=!0,u.eagerState=f,fl(f,i))return Fu(t,l,u,0),St===null&&Wu(),!1}catch{}finally{}if(a=Ei(t,l,u,e),a!==null)return Pt(a,t,e),vo(a,l,e),!0}return!1}function ki(t,l,a,e){if(e={lane:2,revertLane:Xf(),action:e,hasEagerState:!1,eagerState:null,next:null},vn(t)){if(l)throw Error(r(479))}else l=Ei(t,a,e,2),l!==null&&Pt(l,t,2)}function vn(t){var l=t.alternate;return t===at||l!==null&&l===at}function mo(t,l){me=cn=!0;var a=t.pending;a===null?l.next=l:(l.next=a.next,a.next=l),t.pending=l}function vo(t,l,a){if((a&4194176)!==0){var e=l.lanes;e&=t.pendingLanes,a|=e,l.lanes=a,Ac(t,a)}}var xl={readContext:kt,use:rn,useCallback:Ht,useContext:Ht,useEffect:Ht,useImperativeHandle:Ht,useLayoutEffect:Ht,useInsertionEffect:Ht,useMemo:Ht,useReducer:Ht,useRef:Ht,useState:Ht,useDebugValue:Ht,useDeferredValue:Ht,useTransition:Ht,useSyncExternalStore:Ht,useId:Ht};xl.useCacheRefresh=Ht,xl.useMemoCache=Ht,xl.useHostTransitionStatus=Ht,xl.useFormState=Ht,xl.useActionState=Ht,xl.useOptimistic=Ht;var Ba={readContext:kt,use:rn,useCallback:function(t,l){return ul().memoizedState=[t,l===void 0?null:l],t},useContext:kt,useEffect:Ps,useImperativeHandle:function(t,l,a){a=a!=null?a.concat([t]):null,yn(4194308,4,ao.bind(null,l,t),a)},useLayoutEffect:function(t,l){return yn(4194308,4,t,l)},useInsertionEffect:function(t,l){yn(4,2,t,l)},useMemo:function(t,l){var a=ul();l=l===void 0?null:l;var e=t();if(Ca){la(!0);try{t()}finally{la(!1)}}return a.memoizedState=[e,l],e},useReducer:function(t,l,a){var e=ul();if(a!==void 0){var u=a(l);if(Ca){la(!0);try{a(l)}finally{la(!1)}}}else u=l;return e.memoizedState=e.baseState=u,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:u},e.queue=t,t=t.dispatch=K0.bind(null,at,t),[e.memoizedState,t]},useRef:function(t){var l=ul();return t={current:t},l.memoizedState=t},useState:function(t){t=Qi(t);var l=t.queue,a=yo.bind(null,at,l);return l.dispatch=a,[t.memoizedState,a]},useDebugValue:Vi,useDeferredValue:function(t,l){var a=ul();return Ki(a,t,l)},useTransition:function(){var t=Qi(!1);return t=fo.bind(null,at,t.queue,!0,!1),ul().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,l,a){var e=at,u=ul();if(ot){if(a===void 0)throw Error(r(407));a=a()}else{if(a=l(),St===null)throw Error(r(349));(st&60)!==0||Ys(e,l,a)}u.memoizedState=a;var n={value:a,getSnapshot:l};return u.queue=n,Ps(js.bind(null,e,n,t),[t]),e.flags|=2048,he(9,Xs.bind(null,e,n,a,l),{destroy:void 0},null),a},useId:function(){var t=ul(),l=St.identifierPrefix;if(ot){var a=jl,e=Xl;a=(e&~(1<<32-il(e)-1)).toString(32)+a,l=":"+l+"R"+a,a=sn++,0 title"))),wt(n,e,a),n[Jt]=t,Xt(n),e=n;break t;case"link":var i=Lr("link","href",u).get(e+(a.href||""));if(i){for(var f=0;f<\/script>",t=t.removeChild(t.firstChild);break;case"select":t=typeof e.is=="string"?u.createElement("select",{is:e.is}):u.createElement("select"),e.multiple?t.multiple=!0:e.size&&(t.size=e.size);break;default:t=typeof e.is=="string"?u.createElement(a,{is:e.is}):u.createElement(a)}}t[Jt]=l,t[al]=e;t:for(u=l.child;u!==null;){if(u.tag===5||u.tag===6)t.appendChild(u.stateNode);else if(u.tag!==4&&u.tag!==27&&u.child!==null){u.child.return=u,u=u.child;continue}if(u===l)break t;for(;u.sibling===null;){if(u.return===null||u.return===l)break t;u=u.return}u.sibling.return=u.return,u=u.sibling}l.stateNode=t;t:switch(wt(t,a,e),a){case"button":case"input":case"select":case"textarea":t=!!e.autoFocus;break t;case"img":t=!0;break t;default:t=!1}t&&kl(l)}}return At(l),l.flags&=-16777217,null;case 6:if(t&&l.stateNode!=null)t.memoizedProps!==e&&kl(l);else{if(typeof e!="string"&&l.stateNode===null)throw Error(r(166));if(t=ta.current,Ke(l)){if(t=l.stateNode,a=l.memoizedProps,e=null,u=It,u!==null)switch(u.tag){case 27:case 5:e=u.memoizedProps}t[Jt]=l,t=!!(t.nodeValue===a||e!==null&&e.suppressHydrationWarning===!0||Ur(t.nodeValue,a)),t||Na(l)}else t=qn(t).createTextNode(e),t[Jt]=l,l.stateNode=t}return At(l),null;case 13:if(e=l.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(u=Ke(l),e!==null&&e.dehydrated!==null){if(t===null){if(!u)throw Error(r(318));if(u=l.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(317));u[Jt]=l}else we(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;At(l),u=!1}else Ol!==null&&(Hf(Ol),Ol=null),u=!0;if(!u)return l.flags&256?(Gl(l),l):(Gl(l),null)}if(Gl(l),(l.flags&128)!==0)return l.lanes=a,l;if(a=e!==null,t=t!==null&&t.memoizedState!==null,a){e=l.child,u=null,e.alternate!==null&&e.alternate.memoizedState!==null&&e.alternate.memoizedState.cachePool!==null&&(u=e.alternate.memoizedState.cachePool.pool);var n=null;e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),n!==u&&(e.flags|=2048)}return a!==t&&a&&(l.child.flags|=8192),En(l,l.updateQueue),At(l),null;case 4:return ka(),t===null&&Lf(l.stateNode.containerInfo),At(l),null;case 10:return Vl(l.type),At(l),null;case 19:if(Nt(Bt),u=l.memoizedState,u===null)return At(l),null;if(e=(l.flags&128)!==0,n=u.rendering,n===null)if(e)du(u,!1);else{if(Rt!==0||t!==null&&(t.flags&128)!==0)for(t=l.child;t!==null;){if(n=nn(t),n!==null){for(l.flags|=128,du(u,!1),t=n.updateQueue,l.updateQueue=t,En(l,t),l.subtreeFlags=0,t=a,a=l.child;a!==null;)ur(a,t),a=a.sibling;return zt(Bt,Bt.current&1|2),l.child}t=t.sibling}u.tail!==null&&Ul()>zn&&(l.flags|=128,e=!0,du(u,!1),l.lanes=4194304)}else{if(!e)if(t=nn(n),t!==null){if(l.flags|=128,e=!0,t=t.updateQueue,l.updateQueue=t,En(l,t),du(u,!0),u.tail===null&&u.tailMode==="hidden"&&!n.alternate&&!ot)return At(l),null}else 2*Ul()-u.renderingStartTime>zn&&a!==536870912&&(l.flags|=128,e=!0,du(u,!1),l.lanes=4194304);u.isBackwards?(n.sibling=l.child,l.child=n):(t=u.last,t!==null?t.sibling=n:l.child=n,u.last=n)}return u.tail!==null?(l=u.tail,u.rendering=l,u.tail=l.sibling,u.renderingStartTime=Ul(),l.sibling=null,t=Bt.current,zt(Bt,e?t&1|2:t&1),l):(At(l),null);case 22:case 23:return Gl(l),Ri(),e=l.memoizedState!==null,t!==null?t.memoizedState!==null!==e&&(l.flags|=8192):e&&(l.flags|=8192),e?(a&536870912)!==0&&(l.flags&128)===0&&(At(l),l.subtreeFlags&6&&(l.flags|=8192)):At(l),a=l.updateQueue,a!==null&&En(l,a.retryQueue),a=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),e=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(e=l.memoizedState.cachePool.pool),e!==a&&(l.flags|=2048),t!==null&&Nt(qa),null;case 24:return a=null,t!==null&&(a=t.memoizedState.cache),l.memoizedState.cache!==a&&(l.flags|=2048),Vl(Yt),At(l),null;case 25:return null}throw Error(r(156,l.tag))}function I0(t,l){switch(Ai(l),l.tag){case 1:return t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 3:return Vl(Yt),ka(),t=l.flags,(t&65536)!==0&&(t&128)===0?(l.flags=t&-65537|128,l):null;case 26:case 27:case 5:return qu(l),null;case 13:if(Gl(l),t=l.memoizedState,t!==null&&t.dehydrated!==null){if(l.alternate===null)throw Error(r(340));we()}return t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 19:return Nt(Bt),null;case 4:return ka(),null;case 10:return Vl(l.type),null;case 22:case 23:return Gl(l),Ri(),t!==null&&Nt(qa),t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 24:return Vl(Yt),null;case 25:return null;default:return null}}function fr(t,l){switch(Ai(l),l.tag){case 3:Vl(Yt),ka();break;case 26:case 27:case 5:qu(l);break;case 4:ka();break;case 13:Gl(l);break;case 19:Nt(Bt);break;case 10:Vl(l.type);break;case 22:case 23:Gl(l),Ri(),t!==null&&Nt(qa);break;case 24:Vl(Yt)}}var P0={getCacheForType:function(t){var l=kt(Yt),a=l.data.get(t);return a===void 0&&(a=t(),l.data.set(t,a)),a}},ty=typeof WeakMap=="function"?WeakMap:Map,Ot=0,St=null,nt=null,st=0,Tt=0,ol=null,$l=!1,pe=!1,zf=!1,Wl=0,Rt=0,ga=0,Za=0,Af=0,Tl=0,Se=0,yu=null,ql=null,Of=!1,Df=0,zn=1/0,An=null,ba=null,On=!1,Va=null,mu=0,Mf=0,Rf=null,vu=0,Uf=null;function rl(){if((Ot&2)!==0&&st!==0)return st&-st;if(B.T!==null){var t=de;return t!==0?t:Xf()}return Dc()}function cr(){Tl===0&&(Tl=(st&536870912)===0||ot?Tc():536870912);var t=bl.current;return t!==null&&(t.flags|=32),Tl}function Pt(t,l,a){(t===St&&Tt===2||t.cancelPendingCommit!==null)&&(Te(t,0),Fl(t,st,Tl,!1)),xe(t,a),((Ot&2)===0||t!==St)&&(t===St&&((Ot&2)===0&&(Za|=a),Rt===4&&Fl(t,st,Tl,!1)),Cl(t))}function sr(t,l,a){if((Ot&6)!==0)throw Error(r(327));var e=!a&&(l&60)===0&&(l&t.expiredLanes)===0||Ne(t,l),u=e?ey(t,l):qf(t,l,!0),n=e;do{if(u===0){pe&&!e&&Fl(t,l,0,!1);break}else if(u===6)Fl(t,l,0,!$l);else{if(a=t.current.alternate,n&&!ly(a)){u=qf(t,l,!1),n=!1;continue}if(u===2){if(n=l,t.errorRecoveryDisabledLanes&n)var i=0;else i=t.pendingLanes&-536870913,i=i!==0?i:i&536870912?536870912:0;if(i!==0){l=i;t:{var f=t;u=yu;var s=f.current.memoizedState.isDehydrated;if(s&&(Te(f,i).flags|=256),i=qf(f,i,!1),i!==2){if(zf&&!s){f.errorRecoveryDisabledLanes|=n,Za|=n,u=4;break t}n=ql,ql=u,n!==null&&Hf(n)}u=i}if(n=!1,u!==2)continue}}if(u===1){Te(t,0),Fl(t,l,0,!0);break}t:{switch(e=t,u){case 0:case 1:throw Error(r(345));case 4:if((l&4194176)===l){Fl(e,l,Tl,!$l);break t}break;case 2:ql=null;break;case 3:case 5:break;default:throw Error(r(329))}if(e.finishedWork=a,e.finishedLanes=l,(l&62914560)===l&&(n=Df+300-Ul(),10a?32:a,B.T=null,Va===null)var n=!1;else{a=Rf,Rf=null;var i=Va,f=mu;if(Va=null,mu=0,(Ot&6)!==0)throw Error(r(331));var s=Ot;if(Ot|=4,ar(i.current),Po(i,i.current,f,a),Ot=s,hu(0,!1),nl&&typeof nl.onPostCommitFiberRoot=="function")try{nl.onPostCommitFiberRoot(He,i)}catch{}n=!0}return n}finally{N.p=u,B.T=e,br(t,l)}}return!1}function _r(t,l,a){l=vl(a,l),l=Fi(t.stateNode,l,2),t=da(t,l,2),t!==null&&(xe(t,2),Cl(t))}function _t(t,l,a){if(t.tag===3)_r(t,t,a);else for(;l!==null;){if(l.tag===3){_r(l,t,a);break}else if(l.tag===1){var e=l.stateNode;if(typeof l.type.getDerivedStateFromError=="function"||typeof e.componentDidCatch=="function"&&(ba===null||!ba.has(e))){t=vl(a,t),a=To(2),e=da(l,a,2),e!==null&&(Eo(a,e,l,t),xe(e,2),Cl(e));break}}l=l.return}}function Cf(t,l,a){var e=t.pingCache;if(e===null){e=t.pingCache=new ty;var u=new Set;e.set(l,u)}else u=e.get(l),u===void 0&&(u=new Set,e.set(l,u));u.has(a)||(zf=!0,u.add(a),t=iy.bind(null,t,l,a),l.then(t,t))}function iy(t,l,a){var e=t.pingCache;e!==null&&e.delete(l),t.pingedLanes|=t.suspendedLanes&a,t.warmLanes&=~a,St===t&&(st&a)===a&&(Rt===4||Rt===3&&(st&62914560)===st&&300>Ul()-Df?(Ot&2)===0&&Te(t,0):Af|=a,Se===st&&(Se=0)),Cl(t)}function pr(t,l){l===0&&(l=Ec()),t=ua(t,l),t!==null&&(xe(t,l),Cl(t))}function fy(t){var l=t.memoizedState,a=0;l!==null&&(a=l.retryLane),pr(t,a)}function cy(t,l){var a=0;switch(t.tag){case 13:var e=t.stateNode,u=t.memoizedState;u!==null&&(a=u.retryLane);break;case 19:e=t.stateNode;break;case 22:e=t.stateNode._retryCache;break;default:throw Error(r(314))}e!==null&&e.delete(l),pr(t,a)}function sy(t,l){return In(t,l)}var Rn=null,Ae=null,Bf=!1,Un=!1,Yf=!1,Ka=0;function Cl(t){t!==Ae&&t.next===null&&(Ae===null?Rn=Ae=t:Ae=Ae.next=t),Un=!0,Bf||(Bf=!0,ry(oy))}function hu(t,l){if(!Yf&&Un){Yf=!0;do for(var a=!1,e=Rn;e!==null;){if(t!==0){var u=e.pendingLanes;if(u===0)var n=0;else{var i=e.suspendedLanes,f=e.pingedLanes;n=(1<<31-il(42|t)+1)-1,n&=u&~(i&~f),n=n&201326677?n&201326677|1:n?n|2:0}n!==0&&(a=!0,Er(e,n))}else n=st,n=Xu(e,e===St?n:0),(n&3)===0||Ne(e,n)||(a=!0,Er(e,n));e=e.next}while(a);Yf=!1}}function oy(){Un=Bf=!1;var t=0;Ka!==0&&(_y()&&(t=Ka),Ka=0);for(var l=Ul(),a=null,e=Rn;e!==null;){var u=e.next,n=Sr(e,l);n===0?(e.next=null,a===null?Rn=u:a.next=u,u===null&&(Ae=a)):(a=e,(t!==0||(n&3)!==0)&&(Un=!0)),e=u}hu(t)}function Sr(t,l){for(var a=t.suspendedLanes,e=t.pingedLanes,u=t.expirationTimes,n=t.pendingLanes&-62914561;0"u"?null:document;function Xr(t,l,a){var e=De;if(e&&typeof l=="string"&&l){var u=yl(l);u='link[rel="'+t+'"][href="'+u+'"]',typeof a=="string"&&(u+='[crossorigin="'+a+'"]'),Yr.has(u)||(Yr.add(u),t={rel:t,crossOrigin:a,href:l},e.querySelector(u)===null&&(l=e.createElement("link"),wt(l,"link",t),Xt(l),e.head.appendChild(l)))}}function Dy(t){Il.D(t),Xr("dns-prefetch",t,null)}function My(t,l){Il.C(t,l),Xr("preconnect",t,l)}function Ry(t,l,a){Il.L(t,l,a);var e=De;if(e&&t&&l){var u='link[rel="preload"][as="'+yl(l)+'"]';l==="image"&&a&&a.imageSrcSet?(u+='[imagesrcset="'+yl(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(u+='[imagesizes="'+yl(a.imageSizes)+'"]')):u+='[href="'+yl(t)+'"]';var n=u;switch(l){case"style":n=Me(t);break;case"script":n=Re(t)}El.has(n)||(t=I({rel:"preload",href:l==="image"&&a&&a.imageSrcSet?void 0:t,as:l},a),El.set(n,t),e.querySelector(u)!==null||l==="style"&&e.querySelector(_u(n))||l==="script"&&e.querySelector(pu(n))||(l=e.createElement("link"),wt(l,"link",t),Xt(l),e.head.appendChild(l)))}}function Uy(t,l){Il.m(t,l);var a=De;if(a&&t){var e=l&&typeof l.as=="string"?l.as:"script",u='link[rel="modulepreload"][as="'+yl(e)+'"][href="'+yl(t)+'"]',n=u;switch(e){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=Re(t)}if(!El.has(n)&&(t=I({rel:"modulepreload",href:t},l),El.set(n,t),a.querySelector(u)===null)){switch(e){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(pu(n)))return}e=a.createElement("link"),wt(e,"link",t),Xt(e),a.head.appendChild(e)}}}function Hy(t,l,a){Il.S(t,l,a);var e=De;if(e&&t){var u=Fa(e).hoistableStyles,n=Me(t);l=l||"default";var i=u.get(n);if(!i){var f={loading:0,preload:null};if(i=e.querySelector(_u(n)))f.loading=5;else{t=I({rel:"stylesheet",href:t,"data-precedence":l},a),(a=El.get(n))&&Ff(t,a);var s=i=e.createElement("link");Xt(s),wt(s,"link",t),s._p=new Promise(function(m,S){s.onload=m,s.onerror=S}),s.addEventListener("load",function(){f.loading|=1}),s.addEventListener("error",function(){f.loading|=2}),f.loading|=4,Bn(i,l,e)}i={type:"stylesheet",instance:i,count:1,state:f},u.set(n,i)}}}function Ny(t,l){Il.X(t,l);var a=De;if(a&&t){var e=Fa(a).hoistableScripts,u=Re(t),n=e.get(u);n||(n=a.querySelector(pu(u)),n||(t=I({src:t,async:!0},l),(l=El.get(u))&&If(t,l),n=a.createElement("script"),Xt(n),wt(n,"link",t),a.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},e.set(u,n))}}function xy(t,l){Il.M(t,l);var a=De;if(a&&t){var e=Fa(a).hoistableScripts,u=Re(t),n=e.get(u);n||(n=a.querySelector(pu(u)),n||(t=I({src:t,async:!0,type:"module"},l),(l=El.get(u))&&If(t,l),n=a.createElement("script"),Xt(n),wt(n,"link",t),a.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},e.set(u,n))}}function jr(t,l,a,e){var u=(u=ta.current)?Cn(u):null;if(!u)throw Error(r(446));switch(t){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(l=Me(a.href),a=Fa(u).hoistableStyles,e=a.get(l),e||(e={type:"style",instance:null,count:0,state:null},a.set(l,e)),e):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){t=Me(a.href);var n=Fa(u).hoistableStyles,i=n.get(t);if(i||(u=u.ownerDocument||u,i={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(t,i),(n=u.querySelector(_u(t)))&&!n._p&&(i.instance=n,i.state.loading=5),El.has(t)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},El.set(t,a),n||qy(u,t,a,i.state))),l&&e===null)throw Error(r(528,""));return i}if(l&&e!==null)throw Error(r(529,""));return null;case"script":return l=a.async,a=a.src,typeof a=="string"&&l&&typeof l!="function"&&typeof l!="symbol"?(l=Re(a),a=Fa(u).hoistableScripts,e=a.get(l),e||(e={type:"script",instance:null,count:0,state:null},a.set(l,e)),e):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,t))}}function Me(t){return'href="'+yl(t)+'"'}function _u(t){return'link[rel="stylesheet"]['+t+"]"}function Gr(t){return I({},t,{"data-precedence":t.precedence,precedence:null})}function qy(t,l,a,e){t.querySelector('link[rel="preload"][as="style"]['+l+"]")?e.loading=1:(l=t.createElement("link"),e.preload=l,l.addEventListener("load",function(){return e.loading|=1}),l.addEventListener("error",function(){return e.loading|=2}),wt(l,"link",a),Xt(l),t.head.appendChild(l))}function Re(t){return'[src="'+yl(t)+'"]'}function pu(t){return"script[async]"+t}function Qr(t,l,a){if(l.count++,l.instance===null)switch(l.type){case"style":var e=t.querySelector('style[data-href~="'+yl(a.href)+'"]');if(e)return l.instance=e,Xt(e),e;var u=I({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return e=(t.ownerDocument||t).createElement("style"),Xt(e),wt(e,"style",u),Bn(e,a.precedence,t),l.instance=e;case"stylesheet":u=Me(a.href);var n=t.querySelector(_u(u));if(n)return l.state.loading|=4,l.instance=n,Xt(n),n;e=Gr(a),(u=El.get(u))&&Ff(e,u),n=(t.ownerDocument||t).createElement("link"),Xt(n);var i=n;return i._p=new Promise(function(f,s){i.onload=f,i.onerror=s}),wt(n,"link",e),l.state.loading|=4,Bn(n,a.precedence,t),l.instance=n;case"script":return n=Re(a.src),(u=t.querySelector(pu(n)))?(l.instance=u,Xt(u),u):(e=a,(u=El.get(n))&&(e=I({},a),If(e,u)),t=t.ownerDocument||t,u=t.createElement("script"),Xt(u),wt(u,"link",e),t.head.appendChild(u),l.instance=u);case"void":return null;default:throw Error(r(443,l.type))}else l.type==="stylesheet"&&(l.state.loading&4)===0&&(e=l.instance,l.state.loading|=4,Bn(e,a.precedence,t));return l.instance}function Bn(t,l,a){for(var e=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),u=e.length?e[e.length-1]:null,n=u,i=0;i title"):null)}function Cy(t,l,a){if(a===1||l.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof l.precedence!="string"||typeof l.href!="string"||l.href==="")break;return!0;case"link":if(typeof l.rel!="string"||typeof l.href!="string"||l.href===""||l.onLoad||l.onError)break;switch(l.rel){case"stylesheet":return t=l.disabled,typeof l.precedence=="string"&&t==null;default:return!0}case"script":if(l.async&&typeof l.async!="function"&&typeof l.async!="symbol"&&!l.onLoad&&!l.onError&&l.src&&typeof l.src=="string")return!0}return!1}function Vr(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}var Su=null;function By(){}function Yy(t,l,a){if(Su===null)throw Error(r(475));var e=Su;if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var u=Me(a.href),n=t.querySelector(_u(u));if(n){t=n._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Xn.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=n,Xt(n);return}n=t.ownerDocument||t,a=Gr(a),(u=El.get(u))&&Ff(a,u),n=n.createElement("link"),Xt(n);var i=n;i._p=new Promise(function(f,s){i.onload=f,i.onerror=s}),wt(n,"link",a),l.instance=n}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&(l.state.loading&3)===0&&(e.count++,l=Xn.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}function Xy(){if(Su===null)throw Error(r(475));var t=Su;return t.stylesheets&&t.count===0&&Pf(t,t.stylesheets),0"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(c)}catch(o){console.error(o)}}return c(),fc.exports=am(),fc.exports}var um=em();const nm="modulepreload",im=function(c){return"/root/assistant-base-app/"+c},dd={},gd=function(o,v,r){let E=Promise.resolve();if(v&&v.length>0){document.getElementsByTagName("link");const A=document.querySelector("meta[property=csp-nonce]"),H=A?.nonce||A?.getAttribute("nonce");E=Promise.allSettled(v.map(T=>{if(T=im(T),T in dd)return;dd[T]=!0;const b=T.endsWith(".css"),R=b?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${T}"]${R}`))return;const C=document.createElement("link");if(C.rel=b?"stylesheet":nm,b||(C.as="script"),C.crossOrigin="",C.href=T,H&&C.setAttribute("nonce",H),document.head.appendChild(C),b)return new Promise((Q,J)=>{C.addEventListener("load",Q),C.addEventListener("error",()=>J(new Error(`Unable to preload CSS for ${T}`)))})}))}function D(A){const H=new Event("vite:preloadError",{cancelable:!0});if(H.payload=A,window.dispatchEvent(H),!H.defaultPrevented)throw A}return E.then(A=>{for(const H of A||[])H.status==="rejected"&&D(H.reason);return o().catch(D)})};var Et=gc();const ht=ky(Et),fm="/root/assistant-base-app";function bd(c){var o,v,r="";if(typeof c=="string"||typeof c=="number")r+=c;else if(typeof c=="object")if(Array.isArray(c)){var E=c.length;for(o=0;o"u")return;let o=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css",o.firstChild?o.insertBefore(v,o.firstChild):o.appendChild(v),v.styleSheet?v.styleSheet.cssText=c:v.appendChild(document.createTextNode(c))}cm(`:root{--toastify-color-light: #fff;--toastify-color-dark: #121212;--toastify-color-info: #3498db;--toastify-color-success: #07bc0c;--toastify-color-warning: #f1c40f;--toastify-color-error: hsl(6, 78%, 57%);--toastify-color-transparent: rgba(255, 255, 255, .7);--toastify-icon-color-info: var(--toastify-color-info);--toastify-icon-color-success: var(--toastify-color-success);--toastify-icon-color-warning: var(--toastify-color-warning);--toastify-icon-color-error: var(--toastify-color-error);--toastify-container-width: fit-content;--toastify-toast-width: 320px;--toastify-toast-offset: 16px;--toastify-toast-top: max(var(--toastify-toast-offset), env(safe-area-inset-top));--toastify-toast-right: max(var(--toastify-toast-offset), env(safe-area-inset-right));--toastify-toast-left: max(var(--toastify-toast-offset), env(safe-area-inset-left));--toastify-toast-bottom: max(var(--toastify-toast-offset), env(safe-area-inset-bottom));--toastify-toast-background: #fff;--toastify-toast-padding: 14px;--toastify-toast-min-height: 64px;--toastify-toast-max-height: 800px;--toastify-toast-bd-radius: 6px;--toastify-toast-shadow: 0px 4px 12px rgba(0, 0, 0, .1);--toastify-font-family: sans-serif;--toastify-z-index: 9999;--toastify-text-color-light: #757575;--toastify-text-color-dark: #fff;--toastify-text-color-info: #fff;--toastify-text-color-success: #fff;--toastify-text-color-warning: #fff;--toastify-text-color-error: #fff;--toastify-spinner-color: #616161;--toastify-spinner-color-empty-area: #e0e0e0;--toastify-color-progress-light: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55);--toastify-color-progress-dark: #bb86fc;--toastify-color-progress-info: var(--toastify-color-info);--toastify-color-progress-success: var(--toastify-color-success);--toastify-color-progress-warning: var(--toastify-color-warning);--toastify-color-progress-error: var(--toastify-color-error);--toastify-color-progress-bgo: .2}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translate3d(0,0,var(--toastify-z-index));position:fixed;width:var(--toastify-container-width);box-sizing:border-box;color:#fff;display:flex;flex-direction:column}.Toastify__toast-container--top-left{top:var(--toastify-toast-top);left:var(--toastify-toast-left)}.Toastify__toast-container--top-center{top:var(--toastify-toast-top);left:50%;transform:translate(-50%);align-items:center}.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right);align-items:end}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:var(--toastify-toast-bottom);left:50%;transform:translate(-50%);align-items:center}.Toastify__toast-container--bottom-right{bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right);align-items:end}.Toastify__toast{--y: 0;position:relative;touch-action:none;width:var(--toastify-toast-width);min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:var(--toastify-toast-padding);border-radius:var(--toastify-toast-bd-radius);box-shadow:var(--toastify-toast-shadow);max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);z-index:0;display:flex;flex:1 auto;align-items:center;word-break:break-word}@media only screen and (max-width: 480px){.Toastify__toast-container{width:100vw;left:env(safe-area-inset-left);margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translate(0)}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translate(0)}.Toastify__toast-container--rtl{right:env(safe-area-inset-right);left:initial}.Toastify__toast{--toastify-toast-width: 100%;margin-bottom:0;border-radius:0}}.Toastify__toast-container[data-stacked=true]{width:var(--toastify-toast-width)}.Toastify__toast--stacked{position:absolute;width:100%;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s}.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body,.Toastify__toast--stacked[data-collapsed] .Toastify__close-button{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{content:"";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:"";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-icon{margin-inline-end:10px;width:22px;flex-shrink:0;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--light,.Toastify__toast-theme--colored.Toastify__toast--default{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;position:absolute;top:6px;right:6px;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;z-index:1}.Toastify__toast--rtl .Toastify__close-button{left:6px;right:unset}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:1;opacity:.7;transform-origin:left}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right;border-bottom-left-radius:initial}.Toastify__progress-bar--wrp{position:absolute;overflow:hidden;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius);border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}} +`);var Uu=c=>typeof c=="number"&&!isNaN(c),Ja=c=>typeof c=="string",Pl=c=>typeof c=="function",sm=c=>Ja(c)||Uu(c),dc=c=>Ja(c)||Pl(c)?c:null,om=(c,o)=>c===!1||Uu(c)&&c>0?c:o,yc=c=>Et.isValidElement(c)||Ja(c)||Pl(c)||Uu(c);function rm(c,o,v=300){let{scrollHeight:r,style:E}=c;requestAnimationFrame(()=>{E.minHeight="initial",E.height=r+"px",E.transition=`all ${v}ms`,requestAnimationFrame(()=>{E.height="0",E.padding="0",E.margin="0",setTimeout(o,v)})})}function dm({enter:c,exit:o,appendPosition:v=!1,collapse:r=!0,collapseDuration:E=300}){return function({children:D,position:A,preventExitTransition:H,done:T,nodeRef:b,isIn:R,playToast:C}){let Q=v?`${c}--${A}`:c,J=v?`${o}--${A}`:o,dt=Et.useRef(0);return Et.useLayoutEffect(()=>{let et=b.current,W=Q.split(" "),P=x=>{x.target===b.current&&(C(),et.removeEventListener("animationend",P),et.removeEventListener("animationcancel",P),dt.current===0&&x.type!=="animationcancel"&&et.classList.remove(...W))};et.classList.add(...W),et.addEventListener("animationend",P),et.addEventListener("animationcancel",P)},[]),Et.useEffect(()=>{let et=b.current,W=()=>{et.removeEventListener("animationend",W),r?rm(et,T,E):T()};R||(H?W():(dt.current=1,et.className+=` ${J}`,et.addEventListener("animationend",W)))},[R]),ht.createElement(ht.Fragment,null,D)}}function yd(c,o){return{content:_d(c.content,c.props),containerId:c.props.containerId,id:c.props.toastId,theme:c.props.theme,type:c.props.type,data:c.props.data||{},isLoading:c.props.isLoading,icon:c.props.icon,reason:c.removalReason,status:o}}function _d(c,o,v=!1){return Et.isValidElement(c)&&!Ja(c.type)?Et.cloneElement(c,{closeToast:o.closeToast,toastProps:o,data:o.data,isPaused:v}):Pl(c)?c({closeToast:o.closeToast,toastProps:o,data:o.data,isPaused:v}):c}function ym({closeToast:c,theme:o,ariaLabel:v="close"}){return ht.createElement("button",{className:`Toastify__close-button Toastify__close-button--${o}`,type:"button",onClick:r=>{r.stopPropagation(),c(!0)},"aria-label":v},ht.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},ht.createElement("path",{fillRule:"evenodd",d:"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"})))}function mm({delay:c,isRunning:o,closeToast:v,type:r="default",hide:E,className:D,controlledProgress:A,progress:H,rtl:T,isIn:b,theme:R}){let C=E||A&&H===0,Q={animationDuration:`${c}ms`,animationPlayState:o?"running":"paused"};A&&(Q.transform=`scaleX(${H})`);let J=wa("Toastify__progress-bar",A?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${R}`,`Toastify__progress-bar--${r}`,{"Toastify__progress-bar--rtl":T}),dt=Pl(D)?D({rtl:T,type:r,defaultClassName:J}):wa(J,D),et={[A&&H>=1?"onTransitionEnd":"onAnimationEnd"]:A&&H<1?null:()=>{b&&v()}};return ht.createElement("div",{className:"Toastify__progress-bar--wrp","data-hidden":C},ht.createElement("div",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${R} Toastify__progress-bar--${r}`}),ht.createElement("div",{role:"progressbar","aria-hidden":C?"true":"false","aria-label":"notification timer",className:dt,style:Q,...et}))}var vm=1,pd=()=>`${vm++}`;function hm(c,o,v){let r=1,E=0,D=[],A=[],H=o,T=new Map,b=new Set,R=x=>(b.add(x),()=>b.delete(x)),C=()=>{A=Array.from(T.values()),b.forEach(x=>x())},Q=({containerId:x,toastId:X,updateId:$})=>{let L=x?x!==c:c!==1,vt=T.has(X)&&$==null;return L||vt},J=(x,X)=>{T.forEach($=>{var L;(X==null||X===$.props.toastId)&&((L=$.toggle)==null||L.call($,x))})},dt=x=>{var X,$;($=(X=x.props)==null?void 0:X.onClose)==null||$.call(X,x.removalReason),x.isActive=!1},et=x=>{if(x==null)T.forEach(dt);else{let X=T.get(x);X&&dt(X)}C()},W=()=>{E-=D.length,D=[]},P=x=>{var X,$;let{toastId:L,updateId:vt}=x.props,tt=vt==null;x.staleId&&T.delete(x.staleId),x.isActive=!0,T.set(L,x),C(),v(yd(x,tt?"added":"updated")),tt&&(($=(X=x.props).onOpen)==null||$.call(X))};return{id:c,props:H,observe:R,toggle:J,removeToast:et,toasts:T,clearQueue:W,buildToast:(x,X)=>{if(Q(X))return;let{toastId:$,updateId:L,data:vt,staleId:tt,delay:it}=X,B=L==null;B&&E++;let I={...H,style:H.toastStyle,key:r++,...Object.fromEntries(Object.entries(X).filter(([Lt,Wt])=>Wt!=null)),toastId:$,updateId:L,data:vt,isIn:!1,className:dc(X.className||H.toastClassName),progressClassName:dc(X.progressClassName||H.progressClassName),autoClose:X.isLoading?!1:om(X.autoClose,H.autoClose),closeToast(Lt){T.get($).removalReason=Lt,et($)},deleteToast(){let Lt=T.get($);if(Lt!=null){if(v(yd(Lt,"removed")),T.delete($),E--,E<0&&(E=0),D.length>0){P(D.shift());return}C()}}};I.closeButton=H.closeButton,X.closeButton===!1||yc(X.closeButton)?I.closeButton=X.closeButton:X.closeButton===!0&&(I.closeButton=yc(H.closeButton)?H.closeButton:!0);let Dt={content:x,props:I,staleId:tt};H.limit&&H.limit>0&&E>H.limit&&B?D.push(Dt):Uu(it)?setTimeout(()=>{P(Dt)},it):P(Dt)},setProps(x){H=x},setToggle:(x,X)=>{let $=T.get(x);$&&($.toggle=X)},isToastActive:x=>{var X;return(X=T.get(x))==null?void 0:X.isActive},getSnapshot:()=>A}}var ll=new Map,Ru=[],mc=new Set,gm=c=>mc.forEach(o=>o(c)),Sd=()=>ll.size>0;function bm(){Ru.forEach(c=>Ed(c.content,c.options)),Ru=[]}var _m=(c,{containerId:o})=>{var v;return(v=ll.get(o||1))==null?void 0:v.toasts.get(c)};function Td(c,o){var v;if(o)return!!((v=ll.get(o))!=null&&v.isToastActive(c));let r=!1;return ll.forEach(E=>{E.isToastActive(c)&&(r=!0)}),r}function pm(c){if(!Sd()){Ru=Ru.filter(o=>c!=null&&o.options.toastId!==c);return}if(c==null||sm(c))ll.forEach(o=>{o.removeToast(c)});else if(c&&("containerId"in c||"id"in c)){let o=ll.get(c.containerId);o?o.removeToast(c.id):ll.forEach(v=>{v.removeToast(c.id)})}}var Sm=(c={})=>{ll.forEach(o=>{o.props.limit&&(!c.containerId||o.id===c.containerId)&&o.clearQueue()})};function Ed(c,o){yc(c)&&(Sd()||Ru.push({content:c,options:o}),ll.forEach(v=>{v.buildToast(c,o)}))}function Tm(c){var o;(o=ll.get(c.containerId||1))==null||o.setToggle(c.id,c.fn)}function zd(c,o){ll.forEach(v=>{(o==null||!(o!=null&&o.containerId)||o?.containerId===v.id)&&v.toggle(c,o?.id)})}function Em(c){let o=c.containerId||1;return{subscribe(v){let r=hm(o,c,gm);ll.set(o,r);let E=r.observe(v);return bm(),()=>{E(),ll.delete(o)}},setProps(v){var r;(r=ll.get(o))==null||r.setProps(v)},getSnapshot(){var v;return(v=ll.get(o))==null?void 0:v.getSnapshot()}}}function zm(c){return mc.add(c),()=>{mc.delete(c)}}function Am(c){return c&&(Ja(c.toastId)||Uu(c.toastId))?c.toastId:pd()}function Hu(c,o){return Ed(c,o),o.toastId}function Jn(c,o){return{...o,type:o&&o.type||c,toastId:Am(o)}}function kn(c){return(o,v)=>Hu(o,Jn(c,v))}function yt(c,o){return Hu(c,Jn("default",o))}yt.loading=(c,o)=>Hu(c,Jn("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...o}));function Om(c,{pending:o,error:v,success:r},E){let D;o&&(D=Ja(o)?yt.loading(o,E):yt.loading(o.render,{...E,...o}));let A={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},H=(b,R,C)=>{if(R==null){yt.dismiss(D);return}let Q={type:b,...A,...E,data:C},J=Ja(R)?{render:R}:R;return D?yt.update(D,{...Q,...J}):yt(J.render,{...Q,...J}),C},T=Pl(c)?c():c;return T.then(b=>H("success",r,b)).catch(b=>H("error",v,b)),T}yt.promise=Om;yt.success=kn("success");yt.info=kn("info");yt.error=kn("error");yt.warning=kn("warning");yt.warn=yt.warning;yt.dark=(c,o)=>Hu(c,Jn("default",{theme:"dark",...o}));function Dm(c){pm(c)}yt.dismiss=Dm;yt.clearWaitingQueue=Sm;yt.isActive=Td;yt.update=(c,o={})=>{let v=_m(c,o);if(v){let{props:r,content:E}=v,D={delay:100,...r,...o,toastId:o.toastId||c,updateId:pd()};D.toastId!==c&&(D.staleId=c);let A=D.render||E;delete D.render,Hu(A,D)}};yt.done=c=>{yt.update(c,{progress:1})};yt.onChange=zm;yt.play=c=>zd(!0,c);yt.pause=c=>zd(!1,c);function Mm(c){var o;let{subscribe:v,getSnapshot:r,setProps:E}=Et.useRef(Em(c)).current;E(c);let D=(o=Et.useSyncExternalStore(v,r,r))==null?void 0:o.slice();function A(H){if(!D)return[];let T=new Map;return c.newestOnTop&&D.reverse(),D.forEach(b=>{let{position:R}=b.props;T.has(R)||T.set(R,[]),T.get(R).push(b)}),Array.from(T,b=>H(b[0],b[1]))}return{getToastToRender:A,isToastActive:Td,count:D?.length}}function Rm(c){let[o,v]=Et.useState(!1),[r,E]=Et.useState(!1),D=Et.useRef(null),A=Et.useRef({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:H,pauseOnHover:T,closeToast:b,onClick:R,closeOnClick:C}=c;Tm({id:c.toastId,containerId:c.containerId,fn:v}),Et.useEffect(()=>{if(c.pauseOnFocusLoss)return Q(),()=>{J()}},[c.pauseOnFocusLoss]);function Q(){document.hasFocus()||P(),window.addEventListener("focus",W),window.addEventListener("blur",P)}function J(){window.removeEventListener("focus",W),window.removeEventListener("blur",P)}function dt(tt){if(c.draggable===!0||c.draggable===tt.pointerType){x();let it=D.current;A.canCloseOnClick=!0,A.canDrag=!0,it.style.transition="none",c.draggableDirection==="x"?(A.start=tt.clientX,A.removalDistance=it.offsetWidth*(c.draggablePercent/100)):(A.start=tt.clientY,A.removalDistance=it.offsetHeight*(c.draggablePercent===80?c.draggablePercent*1.5:c.draggablePercent)/100)}}function et(tt){let{top:it,bottom:B,left:I,right:Dt}=D.current.getBoundingClientRect();tt.nativeEvent.type!=="touchend"&&c.pauseOnHover&&tt.clientX>=I&&tt.clientX<=Dt&&tt.clientY>=it&&tt.clientY<=B?P():W()}function W(){v(!0)}function P(){v(!1)}function x(){A.didMove=!1,document.addEventListener("pointermove",$),document.addEventListener("pointerup",L)}function X(){document.removeEventListener("pointermove",$),document.removeEventListener("pointerup",L)}function $(tt){let it=D.current;if(A.canDrag&&it){A.didMove=!0,o&&P(),c.draggableDirection==="x"?A.delta=tt.clientX-A.start:A.delta=tt.clientY-A.start,A.start!==tt.clientX&&(A.canCloseOnClick=!1);let B=c.draggableDirection==="x"?`${A.delta}px, var(--y)`:`0, calc(${A.delta}px + var(--y))`;it.style.transform=`translate3d(${B},0)`,it.style.opacity=`${1-Math.abs(A.delta/A.removalDistance)}`}}function L(){X();let tt=D.current;if(A.canDrag&&A.didMove&&tt){if(A.canDrag=!1,Math.abs(A.delta)>A.removalDistance){E(!0),c.closeToast(!0),c.collapseAll();return}tt.style.transition="transform 0.2s, opacity 0.2s",tt.style.removeProperty("transform"),tt.style.removeProperty("opacity")}}let vt={onPointerDown:dt,onPointerUp:et};return H&&T&&(vt.onMouseEnter=P,c.stacked||(vt.onMouseLeave=W)),C&&(vt.onClick=tt=>{R&&R(tt),A.canCloseOnClick&&b(!0)}),{playToast:W,pauseToast:P,isRunning:o,preventExitTransition:r,toastRef:D,eventHandlers:vt}}var Um=typeof window<"u"?Et.useLayoutEffect:Et.useEffect,$n=({theme:c,type:o,isLoading:v,...r})=>ht.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:c==="colored"?"currentColor":`var(--toastify-icon-color-${o})`,...r});function Hm(c){return ht.createElement($n,{...c},ht.createElement("path",{d:"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z"}))}function Nm(c){return ht.createElement($n,{...c},ht.createElement("path",{d:"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z"}))}function xm(c){return ht.createElement($n,{...c},ht.createElement("path",{d:"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z"}))}function qm(c){return ht.createElement($n,{...c},ht.createElement("path",{d:"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"}))}function Cm(){return ht.createElement("div",{className:"Toastify__spinner"})}var vc={info:Nm,warning:Hm,success:xm,error:qm,spinner:Cm},Bm=c=>c in vc;function Ym({theme:c,type:o,isLoading:v,icon:r}){let E=null,D={theme:c,type:o};return r===!1||(Pl(r)?E=r({...D,isLoading:v}):Et.isValidElement(r)?E=Et.cloneElement(r,D):v?E=vc.spinner():Bm(o)&&(E=vc[o](D))),E}var Xm=c=>{let{isRunning:o,preventExitTransition:v,toastRef:r,eventHandlers:E,playToast:D}=Rm(c),{closeButton:A,children:H,autoClose:T,onClick:b,type:R,hideProgressBar:C,closeToast:Q,transition:J,position:dt,className:et,style:W,progressClassName:P,updateId:x,role:X,progress:$,rtl:L,toastId:vt,deleteToast:tt,isIn:it,isLoading:B,closeOnClick:I,theme:Dt,ariaLabel:Lt}=c,Wt=wa("Toastify__toast",`Toastify__toast-theme--${Dt}`,`Toastify__toast--${R}`,{"Toastify__toast--rtl":L},{"Toastify__toast--close-on-click":I}),zl=Pl(et)?et({rtl:L,position:dt,type:R,defaultClassName:Wt}):wa(Wt,et),Zt=Ym(c),U=!!$||!T,w={closeToast:Q,type:R,theme:Dt},G=null;return A===!1||(Pl(A)?G=A(w):Et.isValidElement(A)?G=Et.cloneElement(A,w):G=ym(w)),ht.createElement(J,{isIn:it,done:tt,position:dt,preventExitTransition:v,nodeRef:r,playToast:D},ht.createElement("div",{id:vt,tabIndex:0,onClick:b,"data-in":it,className:zl,...E,style:W,ref:r,...it&&{role:X,"aria-label":Lt}},Zt!=null&&ht.createElement("div",{className:wa("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!B})},Zt),_d(H,c,!o),G,!c.customProgressBar&&ht.createElement(mm,{...x&&!U?{key:`p-${x}`}:{},rtl:L,theme:Dt,delay:T,isRunning:o,isIn:it,closeToast:Q,hide:C,type:R,className:P,controlledProgress:U,progress:$||0})))},jm=(c,o=!1)=>({enter:`Toastify--animate Toastify__${c}-enter`,exit:`Toastify--animate Toastify__${c}-exit`,appendPosition:o}),Gm=dm(jm("bounce",!0)),Qm={position:"top-right",transition:Gm,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:"touch",draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light","aria-label":"Notifications Alt+T",hotKeys:c=>c.altKey&&c.code==="KeyT"};function Lm(c){let o={...Qm,...c},v=c.stacked,[r,E]=Et.useState(!0),D=Et.useRef(null),{getToastToRender:A,isToastActive:H,count:T}=Mm(o),{className:b,style:R,rtl:C,containerId:Q,hotKeys:J}=o;function dt(W){let P=wa("Toastify__toast-container",`Toastify__toast-container--${W}`,{"Toastify__toast-container--rtl":C});return Pl(b)?b({position:W,rtl:C,defaultClassName:P}):wa(P,dc(b))}function et(){v&&(E(!0),yt.play())}return Um(()=>{var W;if(v){let P=D.current.querySelectorAll('[data-in="true"]'),x=12,X=(W=o.position)==null?void 0:W.includes("top"),$=0,L=0;Array.from(P).reverse().forEach((vt,tt)=>{let it=vt;it.classList.add("Toastify__toast--stacked"),tt>0&&(it.dataset.collapsed=`${r}`),it.dataset.pos||(it.dataset.pos=X?"top":"bot");let B=$*(r?.2:1)+(r?0:x*tt);it.style.setProperty("--y",`${X?B:B*-1}px`),it.style.setProperty("--g",`${x}`),it.style.setProperty("--s",`${1-(r?L:0)}`),$+=it.offsetHeight,L+=.025})}},[r,T,v]),Et.useEffect(()=>{function W(P){var x;let X=D.current;J(P)&&((x=X.querySelector('[tabIndex="0"]'))==null||x.focus(),E(!1),yt.pause()),P.key==="Escape"&&(document.activeElement===X||X!=null&&X.contains(document.activeElement))&&(E(!0),yt.play())}return document.addEventListener("keydown",W),()=>{document.removeEventListener("keydown",W)}},[J]),ht.createElement("section",{ref:D,className:"Toastify",id:Q,onMouseEnter:()=>{v&&(E(!1),yt.pause())},onMouseLeave:et,"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text","aria-label":o["aria-label"]},A((W,P)=>{let x=P.length?{...R}:{...R,pointerEvents:"none"};return ht.createElement("div",{tabIndex:-1,className:dt(W),"data-stacked":v,style:x,key:`c-${W}`},P.map(({content:X,props:$})=>ht.createElement(Xm,{...$,stacked:v,collapseAll:et,isIn:H($.toastId,$.containerId),key:`t-${$.key}`},X)))}))}const md=c=>{let o;const v=new Set,r=(b,R)=>{const C=typeof b=="function"?b(o):b;if(!Object.is(C,o)){const Q=o;o=R??(typeof C!="object"||C===null)?C:Object.assign({},o,C),v.forEach(J=>J(o,Q))}},E=()=>o,H={setState:r,getState:E,getInitialState:()=>T,subscribe:b=>(v.add(b),()=>v.delete(b))},T=o=c(r,E,H);return H},Zm=c=>c?md(c):md,Vm=c=>c;function Km(c,o=Vm){const v=ht.useSyncExternalStore(c.subscribe,()=>o(c.getState()),()=>o(c.getInitialState()));return ht.useDebugValue(v),v}const vd=c=>{const o=Zm(c),v=r=>Km(o,r);return Object.assign(v,o),v},Ad=c=>c?vd(c):vd,wm={},Jm=async c=>{const o=new AbortController,v=o.signal,r=c.timeout||6e4*3,E=setTimeout(()=>{o.abort()},r);return fetch(c.url,{method:"POST",headers:{"Content-Type":"application/json",...c.headers},body:JSON.stringify(c.body),signal:v}).then(D=>{const A=D.headers.get("Content-Type");return A&&A.includes("application/json")?D.json():D.text()}).catch(D=>(D.name==="AbortError"&&console.log("Request timed out and was aborted"),console.error(D),{code:500})).finally(()=>{clearTimeout(E)})},hd=c=>{let o;const v=new Set,r=(R,C)=>{const Q=typeof R=="function"?R(o):R;if(!Object.is(Q,o)){const J=o;o=C??(typeof Q!="object"||Q===null)?Q:Object.assign({},o,Q),v.forEach(dt=>dt(o,J))}},E=()=>o,T={setState:r,getState:E,getInitialState:()=>b,subscribe:R=>(v.add(R),()=>v.delete(R)),destroy:()=>{(wm?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),v.clear()}},b=o=c(r,E,T);return T},km=c=>c?hd(c):hd,$m=c=>{try{return new URL(c),c}catch{const v=new URL(c,location.origin);return v.protocol==="http:"&&(v.protocol="ws:"),v.protocol==="https:"&&(v.protocol="wss:"),v.href}};class Wm{url;store;ws;constructor(o){const v=o?.url||"/api/router";if(o?.store)this.store=o.store;else{const E=km(D=>({connected:!1,status:"connecting",setConnected:A=>D({connected:A}),setStatus:A=>D({status:A})}));this.store=E}const r=$m(v);o?.ws&&o.ws instanceof WebSocket?this.ws=o.ws:this.ws=new WebSocket(r),this.connect()}async connect(o){const v=this.store;return v.getState().connected?Promise.resolve(!0):new Promise((E,D)=>{const A=this.ws||new WebSocket(this.url),H=o?.timeout||5*60*1e3;let T=setTimeout(()=>{console.error("WebSocket 连接超时"),D("timeout")},H);A.onopen=()=>{v.getState().setConnected(!0),v.getState().setStatus("connected"),E(!0),clearTimeout(T)},A.onclose=()=>{v.getState().setConnected(!1),v.getState().setStatus("disconnected"),this.ws=null}})}listenConnect(o){const v=this.store,{connected:r}=v.getState();if(r){o();return}return((A,H)=>{const T=v.subscribe((b,R)=>{A(b)!==A(R)&&(H(b,R),T())});return T})(A=>A.connected,()=>{o()})}onMessage(o,v){const r=this.ws,E=v?.isJson??!0,D=v?.selector,A=T=>{try{return JSON.parse(T)}catch{return T}},H=T=>{const b=A(T.data);typeof b=="string"&&!E?o(b,T):typeof b=="object"&&E&&o(D?D(b):b,T)};return r.addEventListener("message",H),()=>{r.removeEventListener("message",H)}}close(){const o=this.ws,v=this.store;o?.close?.(),this.ws=null,v.getState().setConnected(!1),v.getState().setStatus("disconnected")}send(o,v){const r=this.ws,E=v?.isJson??!0,D=v?.wrapper;if(!r||r.readyState!==WebSocket.OPEN){console.error("WebSocket is not open");return}E?r.send(JSON.stringify(D?D(o):o)):r.send(o)}getOpen(){return this.ws?this.ws.readyState===WebSocket.OPEN:!1}}class Fm{adapter;url;beforeRequest;afterResponse;headers;timeout;constructor(o){this.adapter=o?.adapter||Jm,this.url=o?.url||"/api/router",this.headers=o?.headers||{"Content-Type":"application/json"},this.timeout=o?.timeout||6e4*3}async get(o,v){return this.post(o,v)}async post(o,v){const r=v?.url||this.url,E={...this.headers,...v?.headers},D=v?.adapter||this.adapter,A=v?.beforeRequest||this.beforeRequest,H=v?.afterResponse||this.afterResponse,T=v?.timeout||this.timeout,b={url:r,headers:E,body:o,timeout:T};return A&&await A(b),D(b).then(async R=>(R.success=R.code===200,H?await H(R):R))}before(o){this.beforeRequest=o}after(o){this.afterResponse=o}}class bc extends Fm{tokenName;storage;token;qws;constructor(o){super(o),this.tokenName=o?.tokenName||"token",this.storage=o?.storage||localStorage,this.beforeRequest=async v=>{const r=this.token||this.getToken();return r&&(v.headers={...v.headers,Authorization:`Bearer ${r}`}),v},o?.io&&this.createWs()}createWs(o){this.qws=new Wm({url:this.url,...o})}getToken(){return this.storage.getItem(this.tokenName)}saveToken(o){this.storage.setItem(this.tokenName,o)}removeToken(){this.storage.removeItem(this.tokenName)}}new bc;const hc=new bc({url:"/client/router",io:!1}),ev=new bc({}),Im=Ad(c=>({isClient:!1,setIsClient:o=>c({isClient:o}),mount:!1,setMount:o=>c({mount:o}),checkClient:async()=>{if(window?.electron){c({isClient:!0,mount:!0});return}try{if((await hc.post({path:"check"})).code===200){c({isClient:!0,mount:!0});return}}catch(v){console.error(v)}c({mount:!0})}})),Pm=Ad(c=>({config:{},setConfig:o=>c({config:o}),getConfig:async()=>{const o=await hc.post({path:"config"});o.code===200?(console.log(o.data),c({config:o.data,pageApi:o.data?.pageApi||""})):yt.error(o.message||"获取配置失败")},pageApi:"",setPageApi:o=>c({pageApi:o}),saveConfig:async o=>{if(console.log(o),!o){yt.error("配置不能为空");return}const v=await hc.post({path:"config",key:"set",data:{pageApi:o}});v.code===200?yt.success("保存配置成功"):yt.error(v.message||"保存配置失败")}}));console.log("basename",fm);const tv=ht.lazy(()=>gd(()=>import("./index-B3OKg3E6.js"),__vite__mapDeps([0,1]))),lv=ht.lazy(()=>gd(()=>import("./Enter-BnWSbQup.js"),__vite__mapDeps([2,3]))),av=()=>{const o=new URL(window.location.href).searchParams.get("link"),{checkClient:v,mount:r,isClient:E}=Im(),{getConfig:D}=Pm();Et.useEffect(()=>{v()},[]),Et.useEffect(()=>{E&&D()},[E]);const A=Et.useMemo(()=>o?o.includes("enter"):!0,[o]);return r?tl.jsxs(tl.Fragment,{children:[tl.jsx("nav",{className:"bg-amber-500 p-4 sticky top-0 z-10",children:tl.jsxs("ul",{className:"flex space-x-4",children:[tl.jsx("li",{className:A?"text-white":"text-white/70",children:tl.jsx("a",{href:"?link=enter",children:"配置项"})}),tl.jsx("li",{className:A?"text-white/70":"text-white",children:tl.jsx("a",{href:"?link=packages",children:"Packages"})})]})}),tl.jsx("div",{className:"w-full ",style:{height:"calc(100vh - 4rem)"},children:A?tl.jsx(lv,{}):tl.jsx(tv,{})}),tl.jsx(Lm,{})]}):tl.jsx("div",{className:"w-full h-full flex justify-center items-center",children:tl.jsx("div",{className:"w-10 h-10 bg-amber-500 rounded animate-spin"})})};um.createRoot(document.getElementById("root")).render(tl.jsx(av,{}));export{hc as a,Ad as c,tl as j,ev as q,Et as r,Pm as u,yt as y}; diff --git a/src/renderer/root/assistant-base-app/index.html b/src/renderer/root/assistant-base-app/index.html new file mode 100644 index 0000000..9fe98c7 --- /dev/null +++ b/src/renderer/root/assistant-base-app/index.html @@ -0,0 +1,13 @@ + + + + + + Assistant Base App + + + + +
+ + diff --git a/src/scripts/run-save-files.ts b/src/scripts/run-save-files.ts new file mode 100644 index 0000000..60b0c3f --- /dev/null +++ b/src/scripts/run-save-files.ts @@ -0,0 +1,3 @@ +import { installApp, demoData } from '../main/proxy/install'; + +installApp(demoData); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..9d2061e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "module": "commonjs", + "noImplicitAny": false, + "sourceMap": false, + "outDir": "app-dist", + "rootDir": "src", + "baseUrl": ".", + "paths": { + "@/*": [ + "./src/*" + ], + }, + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "moduleResolution": "Node", + "isolatedModules": false, + "resolveJsonModule": true, + "types": [] + }, + "include": [ + "src/**/*" + ], + "exclude": [ + ] +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..95020f7 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,48 @@ +// vite.config.ts +import path from 'path'; +import { defineConfig } from 'vite'; +import electron from 'vite-plugin-electron'; +import { viteStaticCopy } from 'vite-plugin-static-copy'; + +export default defineConfig({ + plugins: [ + electron({ + entry: { + main: 'src/main/index.ts', // 主进程入口文件 + }, + vite: { + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, + }, + build: { + rollupOptions: { + input: { + main: 'src/main/index.ts', // 主进程入口文件 + }, + output: { + format: 'esm', // 设置输出格式为 ESM + }, + }, + outDir: 'dist/main', // 主进程输出目录 + }, + }, + }), + + viteStaticCopy({ + targets: [ + { src: 'src/renderer', dest: '' }, + { + src: 'src/main/preload.js', + dest: 'main', + }, + ], + }), + ], + define: {}, + build: { + outDir: 'dist', // 渲染进程输出目录 + rollupOptions: {}, + }, +});